10

我正在使用更新到 Android 4.3 的 Nexus 7。我有一个应用程序需要设备管理员权限才能锁定/擦除设备。我已将设备管理员权限授予我在所有者资料中的应用程序。因此,当我切换到另一个用户配置文件时,我可以在设备管理应用程序列表中看到我的应用程序。但是,当我在此非所有者用户配置文件上发出锁定命令时,我得到异常

“java.lang.SecurityException:uid XXXXXX 没有活动管理员”。

DevicePolicyManager isActiveAdmin ()方法还在此配置文件上返回 true,但它仍然无法采取行动并使应用程序崩溃。

我假设一旦为所有者用户配置文件设置了设备管理员,它就会自动应用于所有其他用户配置文件。知道为什么会发生这种情况吗?此外,如果我的应用程序需要设备管理员权限,是否有任何文档指出我的应用程序应该如何处理多个用户配置文件?

4

1 回答 1

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>

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

于 2013-12-20T05:49:48.157 回答