[英]Device owner on a nonrooted device (Android L), without NFC, using adb shell, dpm set-device-owner
這里的最終目的是在“ kiosk mod”中安裝一個設備。
他們 說,您既不需要NFC也無需扎根,即可使應用程序成為設備所有者 。 我還沒有看到這種方法的完整示例,但請嘗試:
adb shell dpm set-device-owner <package>/.<ReceiverImplementation>
應該做...所以我這樣做,並得到:
java.lang.SecurityException:
Neither user 2000 nor current process has android.permission.BIND_DEVICE_ADMIN.
因此,以下代碼返回false。
((DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE))
.isDeviceOwnerApp(getApplicationContext().getPackageName())
此STO問題提出了類似的問題,但未指定實際失敗。
清單文件和其他來源的主要靈感來自此google示例
<manifest
package="com.example.android.deviceowner"
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver
android:name=".DeviceOwnerReceiver"
android:description="@string/app_name"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_owner_receiver"/>
<intent-filter>
<action android:name="android.app.action.ACTION_DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>
</application>
</manifest>
我目前正在嘗試執行此操作的設備是LG G Pad。
您的清單文件似乎正確。 您應該知道,它可能來自執行此命令時的系統狀態。 成功運行dpm
命令之前,應檢查許多點:
最好的做法(實際上是我在做實驗時所做的事情)是完全恢復出廠設置,並避免執行大多數配置步驟(強制步驟“配置Wi-Fi”和“名稱”除外),並且不要將任何關聯Google帳戶 。
設置后,您一定會處於干凈狀態。 然后,
pm install
...) adb shell dpm set-device-owner ...
我在博客上寫了一篇文章,解釋了其中的大多數步驟 ,請看一下它,這可能對您有用。
我不確定這是否會對您有所幫助,但是如果您不滿意,也許其他人會使用此解決方案。 我在Samsung Tab A上遇到了非常相似的問題。我無法為應用程序設置所有權。 始終在運行時:
adb shell dpm set-device-owner cy.com.myapp/.AdminReceiver
我得到:
java.lang.SecurityException: Neither user 2000 nor current process has
com.sec.enterprise.permission.MDM_PROXY_ADMIN_INTERNAL.
經過長時間的搜索,我終於發現我需要在清單權限中添加Samsung的特殊權限:
<uses-permission android:name="com.samsung.accessory.permission.ACCESSORY_FRAMEWORK" />
做到了這一點,現在我的應用程序可以按需進入信息亭模式。 您可能正在尋找類似的問題-可能需要為LG設置一個或多個權限設置。 我的解決方案適用於無根設備(顯然沒有添加任何帳戶-恢復出廠設置后仍有效)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.