如何在没有NFC和ADB shell命令的情况下制作我的应用设备所有者

时间:2016-11-01 12:17:28

标签: 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 = new ComponentName(Forms.Context,   Java.Lang.Class.FromType(typeof运算(DeviceAdmin)));               deviceManger.SetGlobalSetting(demoDeviceAdmin," wifi_device_owner_configs_lockdown"," 1");

3 个答案:

答案 0 :(得分:4)

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

如果您没有设置任何帐户,可以使用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

答案 1 :(得分:0)

您可以通过几种不同的方式获取Android设备的设备所有者。根据设备是否归您或BYOD所有,您可以使用不同的方法。 Google的此表总结了您可以获取设备所有权的所有可能方式。你可以找到它here

答案 2 :(得分:0)

我已经创建了一个方法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();
        }
    }