0

检查是否应提示用户在设备上启用 DeviceAdmin 后,我在 Activity 中启动 DevicePolicyManager。

如果用户单击“激活按钮”,将启用 deviceAdmin。

如果用户单击“取消”按钮,用户将看到一个对话框,“您需要在设备上激活设备管理员才能继续使用该应用程序”。通过单击此对话框上的“确定”,我们退出应用程序。

这可以在任何设备上按预期工作。但是,当从设置部分在设备上启用“不保留活动”时,如果用户选择“取消”DeviceAdmin 激活提示,上述行为会发生变化。当用户在提示上单击“取消”时,意图 DevicePolicyManager 会重新启动,但不会显示对话框 -“您需要在设备上激活设备管理员才能继续使用该应用程序”。有人知道为什么会这样吗?

4

2 回答 2

0

启用“不保留活动”时:一旦显示设备管理活动,您的主要活动就完成了。

当“设备管理”被取消时,之前的活动被恢复:onCreate被调用,它的保存状态作为参数。

我猜你没有在这个包中保存任何东西,所以你的活动与你第一次启动它的行为相同。

于 2014-04-10T14:18:24.193 回答
0

您将在您的应用程序中编写此类,如果您启用或禁用 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,因此在 onActivityResult 中您会收到 resultCode,您单击取消按钮或使用比代码激活按钮,您可以检查 DPM 是否已激活或取消,如果它被取消,然后通知用户警报和在警报中只提供一个确定按钮,然后单击完成活动,我认为这应该可以工作,如果这不起作用,请告知问题:) 快乐编码

于 2014-04-10T14:09:32.833 回答