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

无法从我的服务类(Android棒棒糖)启动设备管理员活动,android,android-intent,Android,Android Intent,我正在尝试使用设备管理员活动提示用户以设备管理员身份启用我的应用程序。下面是试图从我的服务类调用设备管理员活动的代码: ComponentName deviceAdmin=new ComponentName(context,DeviceAdminReceiver.class); Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.E

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

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清单如下:

<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安卓版本上都能完美运行,但在棒棒糖版本上却不起作用。在棒棒糖中,当我启动应用程序时,它看起来像是在打开设备管理活动,但活动动画立即停止并关闭,而不提示用户启用设备管理。但是,我的应用程序显示在“设置->安全->设备管理员”窗口中,但它作为设备管理员未被选中。

您可能需要删除android:launchMode=“singleInstance”从发送AndroidManifest.xml中的ACTION\u ADD\u DEVICE\u ADMIN intent的活动中,ACTION\u ADD\u DEVICE\u ADMIN intent是从服务类而不是从活动中发送的。这是问题的一部分,即使在4.x上,没有单独的活动发送intent也不会打开对话框(至少在我们使用的设备上)。创建一个新的活动,该活动只发送意图,然后从您的服务启动该活动。