4

我有一个安装在 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 = new ComponentName(Forms.Context, Java.Lang.Class.FromType(typeof(DeviceAdmin))); deviceManger.SetGlobalSetting(demoDeviceAdmin, "wifi_device_owner_configs_lockdown", "1");

4

3 回答 3

6

源代码说,“设备所有者只能在未配置的设备上设置,除非它是由“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();
}

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

于 2017-05-24T17:24:09.970 回答
2

您可以通过几种不同的方式获取 Android 设备的设备所有者。根据设备是归您所有还是 BYOD,您可以使用不同的方法。Google 提供的这张表格总结了您获得设备所有权的所有可能方式。你可以在这里找到它。

于 2016-11-03T02:45:13.777 回答
-1

我创建了一个方法 MakeOwner() 并在 onCreate 方法中调用了我幸运的是它运行良好......

 public void MakeOwner(){
      try {
            Runtime.getRuntime().exec("dpm set-device-owner com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts/.BasicDeviceAdminReceiver");
        } catch (Exception e) {
            Log.e(TAG, "device owner not set");
            Log.e(TAG, e.toString());
            e.printStackTrace();
        }
    }
于 2018-03-26T07:30:52.547 回答