此处的最终目的是在“kiosk mod”中设置一个设备。
They say您不需要NFC也不需要生根才能使应用程序成为device owner。我还没有看到这个方法的完整示例,但请尝试:
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())
This STO question提出了类似的问题,但没有指明实际的失败。
清单文件和源代码的其余部分主要来自this google sample
<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。
答案 0 :(得分:3)
您的清单文件似乎正确无误。
您应该知道,在执行此命令时,它可能来自您系统的状态。在成功运行dpm
命令之前,应检查许多点:
最好的事情(这是我在做实验时所做的)是完全重启工厂并避免大多数配置步骤(除了强制措施步骤&#34;配置Wi-Fi&#34; ,和&#34;姓名&#34;),不关联任何Google帐户 配置完成后,您一定会处于干净状态。 然后,
pm install
...)adb shell dpm set-device-owner ...
我已经写过an article explaining most of these steps on my blog,看看它,它可能对你的情况有用。
答案 1 :(得分:1)
我不确定这是否会对您有所帮助,但如果不是您,也许其他人会使用此解决方案。我与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.
经过长时间的搜索,我终于发现我需要添加三星的清单权限特权:
<uses-permission android:name="com.samsung.accessory.permission.ACCESSORY_FRAMEWORK" />
这就是诀窍,现在我的应用程序可以根据需要进入自助服务终端模式。可能您正在查看类似的问题 - 可能需要为您的LG设置一个或多个权限设置。 我的解决方案适用于非root设备(显然没有添加任何帐户 - 出厂重置后新鲜)。