在检查是否应提示用户在设备上启用DeviceAdmin后,我将在"活动"中启动DevicePolicyManager。
如果用户单击"激活按钮",将启用deviceAdmin。
如果用户单击"取消"按钮,用户将显示一个对话框,"您需要激活设备上的设备管理员才能继续应用程序"。单击此对话框上的"确定",我们将退出应用程序。
这在任何设备上都能正常工作。但是,当从设置部分在设备上启用"不保留活动"时,如果用户选择"取消"DeviceAdmin激活提示,则上述行为会发生变化。当用户在提示上单击"取消"时,intent DevicePolicyManager将重新启动,而不会显示对话框-"您需要在设备上激活设备管理员才能继续应用程序"。有人知道为什么会发生这种事吗?
这个类是您在应用程序中编写的,如果您启用或禁用DPM,则会收到此消息,因此当您在onDisable中收到此消息时,您可以通知用户
public class DeviceAdmin extends DeviceAdminReceiver {
static SharedPreferences getSamplePreferences(Context context) {
return context.getSharedPreferences(DeviceAdminReceiver.class.getName(), 0);
}
void showToast(Context context, CharSequence msg) {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onEnabled(Context context, Intent intent) {
// showToast(context, "Device Admin: enabled");
}
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
//return "This is an optional message to warn the user about disabling.";
return null;
}
@Override
public void onDisabled(Context context, Intent intent) {
// showToast(context, "Device Admin: disabled");
}
}
现在,您将使用一些活动启动DPM因此,在ActivityResult中,您会收到单击取消按钮或激活按钮的resultCode使用than代码,您可以检查DPM是否已激活或已取消(如果已取消),然后用警报通知用户,并在警报中只给出一个"确定"按钮,单击该按钮即可完成活动我认为这应该有效,如果不起作用,请告知问题:)愉快编码
启用"不保留活动"时:一旦显示"设备管理"活动,您的主活动就完成了。
当"设备管理"被取消时,上一个活动被恢复:onCreate
被调用,其保存状态作为参数。
我想你没有在这个捆绑包中保存任何东西,所以你的活动与第一次启动它的行为相同。