2015-05-28 65 views
0

我试图提示用户使用设备管理员活动来启用我的应用程序作为设备管理员。以下是试图从我的服务级别呼叫设备管理员活动的代码:无法从我的服务类(Android Lollipop)启动设备管理员活动

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的android版本,但不适用于棒棒糖版本。在棒棒糖中,当我启动我的应用程序时,它看起来像是在打开设备管理员活动,但立即停止活动动画并关闭,而不提示用户启用设备管理员。但是,我的应用程序显示在设置 - >安全 - >设备管理员窗口中,但未作为设备管理员进行检查。

回答

1

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

+1

ACTION_ADD_DEVICE_ADMIN意图活动从服务类发送不从活动。 – Chethan

+1

那么这是问题的一部分,即使在4.x没有单独的活动来发送意图也不会启动对话框(至少在我们使用的设备上)。创建一个除了发送意图之外什么都不做的新活动,然后从您的服务中启动该活动。 – manicmethod