3 回答

TA贡献1895条经验 获得超7个赞
实际上,除了NFC之外,还有一种方法可以将应用程序设置为设备所有者应用程序。您可以从中使用dpm命令行工具adb shell。
用法:
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,/data/system/device_owner.xml该文件下引用了设备/配置文件所有者应用。
然后,Android平台正在读取此文件,以检查哪个应用程序被视为设备所有者或配置文件所有者应用程序。
在有根设备上,您确实可以自己创建此文件,但是由于该dpm工具正在执行此操作,因此最好使用它(DRY原理):
例如,通过Runtime.exec()命令:
Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");
另请注意,只有在使用前未为用户设置任何帐户(确保在“设置”>“帐户”中未设置任何帐户)的情况下,此工具才有效。
来源和更多信息在Android的shell命令工具:设备规范管理

TA贡献1887条经验 获得超5个赞
更新:
在我的Android 7.1.2机顶盒(AOSF和root机顶盒)上,我发现了一些随着时间而发展的事情。
exec("dpm set-device-owner ...")抛出异常,除非<uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />在AndroidManifest.xml中声明。但这带来了其他问题,在这里有更多的讨论。
该文件/data/system/device_policy.xml不再显示。相反,现在/data/system/device_policy_2.xml和架构略有不同。dpm set-device-owner com.myDomain.myPackage/.myComponent通过adb shell 运行时,文件生成为:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root>
<device-owner package="com.myDomain.myPackage" name="" component="com.myDomain.myPackage/com.myDomain.myPackage.myComponent" userRestrictionsMigrated="true" />
</root>
- 3 回答
- 0 关注
- 1256 浏览
添加回答
举报