How to remove set-device-owner in Android DPM?

前端 未结 5 2024
花落未央
花落未央 2020-12-09 00:15

I have made an app device owner using ADB, by following this link : How to make my app a device owner?

but now, I\'m not able to revert this.

In the device a

相关标签:
5条回答
  • 2020-12-09 00:41

    you can use the following ADB shell command to remove device owner

    adb shell dpm remove-active-admin ComponentInfo{}
    

    Disables an active admin, the admin must have declared android:testOnly in the application in its manifest. This will also remove device and profile owners

    0 讨论(0)
  • 2020-12-09 00:43

    By specifying the android:testOnly="true" attribute in the AndroidManifest.xml it will be possible to uninstall the app or remove admin with:

    adb shell dpm remove-active-admin package.name/MyDeviceAdminReceiver

    But on a production device, this attribute should not be included and the app will be a non-test admin. From that point, it will not be possible to remove it or uninstall the application without wipe/factory reset.

    Thankfully, updates can be done when the app is signed with the same key and when the version code is equal or greater:

    adb install -r path/to/kiosk.apk

    If you would like to get rid of admin and application on a production device programatically you have to reinstall it with a few new changes. Firstly you can wipe data programmatically if you have permission <wipe-data \> in device_admin_receiver.xml with:

    devicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA)

    If you don’t have this permission new version should not start LockTask and remove its package from default Home app list with:

    devicePolicyManager.clearPackagePersistentPreferredActivities(adminComponentName, packageName)

    You could then manually go to Settings to perform a wipe/factory reset.

    Information found on https://snow.dog/blog/kiosk-mode-android

    0 讨论(0)
  • 2020-12-09 00:45

    fyi: adb shell dpm remove-active-admin only available from Android 7

    0 讨论(0)
  • 2020-12-09 00:46

    You can unset it programmatically. You need to call this function in your device owner application

    DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    
    dpm.clearDeviceOwnerApp(context.getPackageName());
    

    For more information see

    Update: This method is deprecated in API level 26

    0 讨论(0)
  • 2020-12-09 00:54

    The only way out is to flash or factory reset the device.

    0 讨论(0)
提交回复
热议问题