无法从我的服务类启动设备管理员活动(Android Lollipop)

时间:2015-05-28 06:50:11

标签: android android-intent

我尝试使用设备管理员活动提示用户以设备管理员身份启用我的应用程序。以下是尝试从我的服务类调用设备管理员活动的代码:

ComponentName deviceAdmin=new ComponentName(context,DeviceAdminReceiver.class);
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Make sure to accept in order to provide support for lock and wipe");
PendingIntent pendingIntent = PendingIntent.getActivity(context, DevicePolicyManagerLockWipeService.RESULT_ENABLE, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
pendingIntent.send();

Android Manifest如下;

<receiver android:name=".DeviceAdminReceiver" android:label="DeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN" android:exported="true">
<meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin"/>
<intent-filter>
   <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>

这适用于任何4.x安卓版本,但不适用于Lollipop版本。在棒棒糖中,当我启动我的应用程序时,看起来它正在打开设备管理活动,但是活动动画立即停止并且关闭而不提示用户启用设备管理员。但是,我的应用程序显示在settings-&gt; security-&gt;设备管理员窗口中,但未作为设备管理员进行检查。

1 个答案:

答案 0 :(得分:1)

您可能需要从AndroidManifest.xml中发送ACTION_ADD_DEVICE_ADMIN意图的活动中删除android:launchMode =“singleInstance”