【问题标题】:How to check if an Android App is a device owner?如何检查Android App是否是设备所有者?
【发布时间】:2017-12-04 06:08:11
【问题描述】:

我正在使用机器人框架执行一个测试用例,我必须安装一个应用程序并使其成为设备所有者,然后检查同一个应用程序是否已成为设备所有者。我已经搜索过 Stack Overflow 和其他搜索引擎结果,但在那里,他们提到了如何将应用程序作为设备所有者,但没有提到如何检查应用程序是否是设备所有者。

我使用以下命令将我的应用设为设备所有者:

adb shell dpm set-device-owner com.myapp.package/.main.receiver.DeviceAdminReceiver

现在,我想验证它是设备所有者还是现在使用 ADB 命令。

【问题讨论】:

  • 在您的dpm 命令之前和之后执行adb shell cat /data/system/device_owner.xml
  • 还有dumpsys device_policy

标签: android adb robotframework


【解决方案1】:

adb shell dumpsys device_policy

此命令将为您提供一系列策略,包括设备所有者(这是第一个策略)以及包名称和相应的接收者。

为了便于检查,请使用adb shell dumpsys device_policy | grep "admin"

【讨论】:

  • 这应该是公认的答案。虽然adb shell getprop ro.device_owner 可用于确定设备所有者模式是否打开,但上述命令成功地显示了我正在开发的平板电脑上的 MDM 应用程序的组件名称。我打算将它与各种 DevicePolicyManager 函数一起使用。
  • 你也可以运行adb shell "dumpsys device_policy | grep package"来获取设备所有者的包名
【解决方案2】:
adb shell getprop ro.device_owner

如果启用了设备所有者模式,则返回 true

【讨论】:

  • 您能否详细说明您的答案以说明您的方法?
  • 问题不在于是否启用了该模式,而在于检查设备所有者是哪个特定应用
  • 这个答案会导致错误的方向,因为 OP 想要检查组件是否是设备所有者。但接受的答案是检测设备所有者模式状态。
  • 这个答案看起来是正确的,但需要更多解释。我们知道,任何时候都只能将一个 Android 应用设置为设备所有者应用。所以首先,确保上面的命令返回“false”。然后将您的 Android 应用设置为设备所有者应用。然后再次运行上述命令。如果答案为“真”,则您的应用已成功设置为设备所有者应用。
  • 并非所有安卓设备都有ro.device_owner属性,这种情况下不会有返回值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 2015-12-06
相关资源
最近更新 更多