无法显式销毁DevicePolicyManager

时间:2014-04-10 14:03:21

标签: android memory-leaks device-admin low-memory

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

如果用户点击 "激活按钮",将启用deviceAdmin。

如果用户点击 "取消"按钮,用户将显示一个对话框,"您需要在设备上激活设备管理员才能继续使用应用程序"。点击" OK"在此对话框中,我们退出应用程序。

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

2 个答案:

答案 0 :(得分: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是否被激活或取消,如果它被取消然后通知用户警报和警报只给一个确定按钮,然后点击完成活动 我认为这应该有用,如果这不起作用请告诉我们问题:) 快乐的编码

答案 1 :(得分:0)

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

取消“设备管理员”后,将恢复上一个活动:调用onCreate并将其保存状态作为参数。

我猜你没有保存此捆绑包中的任何内容,因此您的活动具有与首次启动它时相同的行为。