使用DeviceAdminReceiver锁定设备

Uma*_*yal 6 android device-admin

我尝试使用DeviceAdminReceiver锁定设备并尝试启用以下管理:

if (!mDPM.isAdminActive(mDeviceAdminSample)) {
  Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
  intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
  intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Additional text explaining why this needs to be added.");   startActivity(intent);
 }
Run Code Online (Sandbox Code Playgroud)

并得到如下错误:

错误/错误(1022):java.lang.SecurityException:uid 10045没有为策略#3拥有的活动管理员

请给我一些代码解决方案以及如何启用管理权限.

Ant*_*ton 8

根据您的错误消息判断,您可能忘记设置device_admin_sample.xml要求使用的策略.

例如,如果您AndroidManifest.xml在其中有以下接收者代码DeviceAdminSample.

<receiver android:name=".app.DeviceAdminSample"
          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)

然后确保您还设置device_admin_sample.xml了以下xml,以便您可以使用每个设备管理员的能力.

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
  </uses-policies>
</device-admin>
Run Code Online (Sandbox Code Playgroud)