非所有者个人资料的Android 4.3 DeviceAdmin错误

时间:2013-09-23 13:19:39

标签: android android-4.3-jelly-bean device-admin

我正在使用更新到4.3的Nexus 7。 我有一个应用程序需要设备管理员权限锁定/擦除设备。 我已将设备管理权限授予我在所有者资料上的应用程序。因此,当我切换到另一个用户配置文件时,我可以在设备管理应用列表中看到我的应用程序。 但是当我在这个非所有者用户配置文件上给出一个Lock命令时,我得到了异常 “java.lang.SecurityException:uid XXXXXX没有活动的管理员”。

DevicePolicyManager isActiveAdmin()方法在此配置文件中也返回true,但仍无法执行操作并使应用程序崩溃。

我假设一旦设备管理员设置为所有者用户配置文件,它会自动应用于所有其他用户配置文件。任何想法,然后为什么会发生这种情况? 此外,是否有任何文档指出我的应用程序应该采取什么谨慎措施,以便在我的应用程序需要设备管理员权限时处理多个用户配置文件

1 个答案:

答案 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>

进一步阅读一步一步的说明,也值得检查: