如何让我的应用成为设备所有者?

Vis*_*ram 58 android device-admin

装置策略管理器API文档安卓5.0概述都提到了一些关于设备所有者的应用程序.如何将我的应用设置为设备所有者

编辑:除了root和NFC之外还有其他方法吗?请分享.

Flo*_*ont 57

实际上除了NFC和root之外还有一种方法可以将应用程序设置为设备所有者应用程序.您可以使用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.
Run Code Online (Sandbox Code Playgroud)

UPDATE:dpm实用程序是非常简单的实际.其目标是创建一个名为device_owner.xmlunder 的新文件,/data/system/device_owner.xml该文件引用设备/配置文件所有者应用程序.

Android平台随后将读取此文件以检查哪个应用程序被视为设备所有者配置文件所有者应用程序.

在root设备上,您确实可以自己创建此文件,但由于该dpm工具正在执行此操作,因此您最好使用它(DRY原则):

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

Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");
Run Code Online (Sandbox Code Playgroud)

另请注意,只有在用户未设置帐户(确保在设置>帐户中未设置帐户)之前,此工具才有效.

来源和更多信息Android的shell命令工具:设备规范管理

  • 当我从命令行调用"adb shell dpm set-device-owner BLAH"时,工作正常(我的应用程序成为设备所有者 - 我没有得到安全例外,因为我的应用程序是系统应用程序),但是当我从我的电话打电话时程序"Runtime.getRuntime().exec("dpm set-device-owner BLAH");" 我得到一个无声的失败(不是SecurityException,虽然我希望得到一些反馈).知道为什么吗? (5认同)
  • 这通常是企业应用程序的安装方式. (3认同)
  • **dpm**命令的使用是通过`adb shell`命令完成的,因此您首先需要配置设备,启用开发人员模式,启用调试,像往常一样安装您的应用程序(例如,安装Android Studio)然后使用`dpm`将其设置为设备所有者应用.您可以将命令`dpm`视为一种工具,以方便您开发设备/配置文件所有者应用程序. (2认同)
  • @Hartok为什么你说这不能用于生产?任何不需要生根设备的解决方案似乎更适合生产部署. (2认同)
  • 该解决方案需要在目标设备上启用 adb 调试工具。 (2认同)
  • 好答案和简短答案对我有很大帮助!我只想补充一下,还有更多未显示的实现细节,例如添加设备管理接收者代码,这是使dpm命令起作用所需的。仅供参考。http://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop/ (2认同)
  • 对我来说,dpm 命令仅在指定组件名称时有效,如下所示: com.example.app/.DeviceOwnerReceiver / 之后的部分是扩展 DeviceAdminReceiver 的类的名称 (2认同)

Spy*_*net 14

如果您是设备上的root用户,则可以按照此方法成为设备所有者.

首先,创建一个device_owner.xml包含以下内容的文件:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-owner package="your.owner.app.package.id" name="Your app name" />
Run Code Online (Sandbox Code Playgroud)

现在执行以下步骤

  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. 重启

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