我正在使用更新到4.3的Nexus 7。 我有一个应用程序需要设备管理员权限锁定/擦除设备。 我已将设备管理权限授予我在所有者资料上的应用程序。因此,当我切换到另一个用户配置文件时,我可以在设备管理应用列表中看到我的应用程序。 但是当我在这个非所有者用户配置文件上给出一个Lock命令时,我得到了异常 “java.lang.SecurityException:uid XXXXXX没有活动的管理员”。
DevicePolicyManager isActiveAdmin()方法在此配置文件中也返回true,但仍无法执行操作并使应用程序崩溃。
我假设一旦设备管理员设置为所有者用户配置文件,它会自动应用于所有其他用户配置文件。任何想法,然后为什么会发生这种情况? 此外,是否有任何文档指出我的应用程序应该采取什么谨慎措施,以便在我的应用程序需要设备管理员权限时处理多个用户配置文件
答案 0 :(得分:8)
您是否在device_admin_sample.xml中设置了哪些管理员政策符合您的应用预期行为?
将管理参数设置为
android:label="@string/enterprise_device_admin"
android:permission="android.permission.BIND_DEVICE_ADMIN">
android:resource="@xml/enterprise_device_admin" />
以下是文件device_admin_sample.xml的典型内容:
<activity android:name=".app.DeviceAdminSample"
android:label="@string/activity_sample_device_admin">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"
android:label="@string/sample_device_admin"
android:description="@string/sample_device_admin_description"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
进一步阅读一步一步的说明,也值得检查: