繁体   English   中英

无法通过编程方式设置设备所有者

[英]Unable to set device owner through programmatically

我尝试执行以下代码将我的应用设置为设备所有者。 我不能使用 ADB,因为我有超过 10K 的 android-9 无根设备。 因此,需要以编程方式执行此操作。

   String name = AdminReceiver.class.getName();
   if (name.startsWith(BuildConfig.APPLICATION_ID)) {
           name = name.substring(BuildConfig.APPLICATION_ID.length());
   }
   final String command = "dpm set-device-owner " + BuildConfig.APPLICATION_ID + '/' + name;
   Process process = Runtime.getRuntime().exec(command);
   Log.d(TAG,"RETURN VALUE:"process.waitFor();

process.waitFor() 总是返回 1。

需要以编程方式执行此操作

幸运的是,出于明显的安全原因,这是不可能的。

请改用二维码注册!

您可以为您的设备所有者 package 生成包含 URL 的 QR 码。 然后您可以在设备的出厂设置过程中扫描此代码。

请参阅此处的文档

二维码中的数据如下所示:

{
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.google.android.apps.work.clouddpc/.receivers.CloudDeviceAdminReceiver",
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "I5YvS0O5hXY46mb01BlRjq4oJJGs2kuUcHvVkAPEXlg",
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://play.google.com/managed/downloadManagingApp?identifier=setup"
}

只需将信息替换为您自己的设备所有者 package 信息即可。 扫描后,设备将下载、安装并设置设备所有者。


如果您成为 Google 的 EMM 合作伙伴,您甚至可以通过从制造商处获取预配置的 android 设备来进行零接触注册。 但 Google 已停止批准自定义设备策略管理器的请求,您现在必须使用 Android 管理 API。


脚注

有点晚的答案,但它可能会在未来帮助一些开发人员。 下面 function 适用于 Android 11。

try {
Runtime.getRuntime().exec("dpm set-device-owner --user 0 
com.example.myapp/com.example.myapp.DeviceAdminRcvr");
} catch (Exception e) {
e.printStackTrace();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM