嘿伙计我提出了一个问题,我一直在寻找解决方案的日子。
我有一个安装在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");
答案 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();
}
}