簡體   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