如何使我的应用程序设备所有者?
设备策略pipe理器API文档和android 5.0概述都提到了关于设备所有者应用程序的内容 。 我如何设置我的应用程序作为设备所有者 ?
编辑:有没有其他的方式比生根和NFC如果可用请分享。
实际上,除了NFC和生根之外,还有一种方法可以将应用程序设置为设备所有者应用程序。 你可以使用adb shell
的dpm命令行工具。
用法:
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" />
现在执行以下步骤
-
adb push device_owner.xml /sdcard/
-
adb shell
-
su
-
cp /sdcard/device_owner.xml /data/system/
-
cd /data/system/
-
chown system:system device_owner.xml
-
重启
注意:在重新启动设备之前,请确保您安装了您正在尝试设备拥有者的应用程序。 如果你不这样做,你将获得无限的启动animation。
刚刚尝试过, dpm
命令需要在真实设备(例如Samsung T550)上具有root权限,否则将失败,并出现SecurityException
。 adb shell
只能授权给android模拟器。 所以你必须先将设备根目录。