Android设备管理员在激活应用程序时未打开

时间:2014-07-23 17:19:33

标签: android

我正在通过触发意图激活我的应用程序中的移动设备管理员。

我的应用程序在第一次试用中打开设备管理页面。现在我从我的应用程序激活设备管理员。

但是当重新打开(停用或激活)其未打开的设备管理页面时,即使我的代码也运行那些触发设备管理员的行。

打开设备管理页面的代码:

     ComponentName mDeviceAdminSample = new ComponentName(mContext, MGDeviceAdminReciever.class);
     Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
     intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
     intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,mContext.getString(R.string.enable_device_manager_declare));
     mContext.startActivity(intent);

1 个答案:

答案 0 :(得分:1)

就是这样,但不是打开设备管理页面,而是在内部禁用它。

            DevicePolicyManager mDPM = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
            ComponentName mDeviceAdminSample = new ComponentName(mContext, MGDeviceAdminReciever.class);
            if (isChecked) {
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO) {

                    if (!PreferenceDataHelper.getUIEnable(mContext, PreferenceDataHelper.UNINSTALL_PROTECT_BUTTON_SETTING)) {
                        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
                        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, mContext.getString(R.string.enable_device_manager_declare));
                        mContext.startActivity(intent);
                    }
                }
            } else {
                **mDPM.removeActiveAdmin(mDeviceAdminSample);**
                Toast.makeText(mContext, "Device Administrator is disabled.", Toast.LENGTH_SHORT).show();
            }