如何在没有NFC和ADB Shell命令的情况下使我的应用程序设备所有者

Gue*_*est 4 android device-owner

大家好,我有一个问题,我一直在寻找解决方案的日子。

我有一个安装在100多个设备上的android应用。(Android 5.1.1 API22和6.0.1 API 23)

https://developer.android.com/reference/android/app/admin/package-summary.html

我经历了所有这些引用,但没有走运:/使用devicePolicyManager时,出现错误:XXXXX App不是设备所有者。我知道有一种方法可以通过Shell命令(ADB)来获得设备所有者,但是我不能通过USB在所有设备上单独做到这一点。

DevicePolicyManager deviceManger =(DevicePolicyManager)Forms.Context.GetSystemService(Context.DevicePolicyService); ComponentName demoDeviceAdmin =新的ComponentName(Forms.Context,Java.Lang.Class.FromType(typeof(DeviceAdmin))); deviceManger.SetGlobalSetting(demoDeviceAdmin,“ wifi_device_owner_configs_lockdown”,“ 1”);

Ste*_*etz 5

源代码说:“设备所有者只能在未配置的设备上设置,除非它是由” adb”启动的,在这种情况下,如果没有与该设备关联的帐户,我们将允许它”

如果您没有设置任何帐户,则可以使用dpm以编程方式进行设置:

try {
    Runtime.getRuntime().exec("dpm set-device-owner com.example.deviceowner/.MyDeviceAdminReceiver");
} catch (Exception e) {
    Log.e(TAG, "device owner not set");
    Log.e(TAG, e.toString());
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

参考:http : //florent-dupont.blogspot.fr/2015/01/android-shell-command-dpm-device-policy.html

  • 我正在执行同一条语句,但返回null且未应用任何内容...可能是什么? (5认同)
  • 我试过实现这一点,发现它只适用于有根设备。否则 dpm 命令只能在 adb shell 中使用。如果有另一种方法可以在没有 root 的情况下以编程方式执行此命令,请分享。 (2认同)