如何使我的应用程序设备所有者?

设备策略pipe理器API文档和android 5.0概述都提到了关于设备所有者应用程序的内容 。 我如何设置我的应用程序作为设备所有者

编辑:有没有其他的方式比生根和NFC如果可用请分享。

实际上,除了NFC和生根之外,还有一种方法可以将应用程序设置为设备所有者应用程序。 你可以使用adb shelldpm命令行工具。

用法:

 usage: dpm [subcommand] [options] usage: dpm set-device-owner <COMPONENT> usage: dpm set-profile-owner <COMPONENT> <USER_ID> dpm set-device-owner: Sets the given component as active admin, and its package as device owner. dpm set-profile-owner: Sets the given component as active admin and profile owner for an existing user. 

更新:实际上, dpm实用程序非常简单。 其目标是在device_owner.xml下创build一个名为device_owner.xml的新文件,该文件引用Device / Profile所有者应用程序。

然后,Android平台正在读取该文件,以检查哪个应用程序被视为设备所有者configuration文件所有者应用程序

在一个有根的设备上 ,你确实可以自己创build这个文件 ,但是由于dpm工具正在这样做,所以最好使用它(DRY原则):

例如,通过一个Runtime.exec()命令:

 Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr"); 

另外请注意,只有在没有为用户设置帐户(确保在“设置”>“帐户”中未设置帐户 )之前,此工具才能使用。

Android shell命令工具的 源代码和更多信息 :Device Policy Manager

如果您是根设备,则可以按照此方法成为设备所有者。

首先,创build一个文件device_owner.xml ,内容如下:

 <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <device-owner package="your.owner.app.package.id" name="Your app name" /> 

现在执行以下步骤

  1. adb push device_owner.xml /sdcard/

  2. adb shell

  3. su

  4. cp /sdcard/device_owner.xml /data/system/

  5. cd /data/system/

  6. chown system:system device_owner.xml

  7. 重启

注意:在重新启动设备之前,请确保您安装了您正在尝试设备拥有者的应用程序。 如果你不这样做,你将获得无限的启动animation。

刚刚尝试过, dpm命令需要在真实设备(例如Samsung T550)上具有root权限,否则将失败,并出现SecurityExceptionadb shell只能授权给android模拟器。 所以你必须先将设备根目录。