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

Alo*_*rni 10 android device-admin android-4.3-jelly-bean

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

DevicePolicyManager isActiveAdmin()方法在此配置文件上也返回true,但仍然无法执行操作并导致应用程序崩溃.

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

Ava*_*anz 8

您是否在device_admin_sample.xml中设置了哪些管理员政策符合您的应用预期行为?

将管理参数设置为

 android:label="@string/enterprise_device_admin" 
        android:permission="android.permission.BIND_DEVICE_ADMIN"> 
     android:resource="@xml/enterprise_device_admin" /> 
Run Code Online (Sandbox Code Playgroud)

以下是文件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>
Run Code Online (Sandbox Code Playgroud)

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