从shell禁用DeviceAdmin?

时间:2012-12-17 09:30:17

标签: android shell adb uninstall administrator

我正在尝试从shell卸载应用程序,但是此应用程序作为设备管理员运行,因此shell> adb uninstall com.example.test无效。

如何从shell中禁用设备管理员?

3 个答案:

答案 0 :(得分:14)

通常,通过“设备管理员”屏幕撤消管理员访问权限,然后卸载该应用程序。在随后的示例中,我假设airdroid(com.sand.airdroid)已被配置为设备管理员,并将被卸载。因此,要定制此示例,请使用您自己的应用名称替换com.sand.airdroid的实例。

清洁方法

要访问设备管理员,请导航:设置安全设备管理员。然后,取消选中要取消设置管理访问权限的应用程序。

也可以使用shell打开此活动:

adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"

完成此操作后,可以正常卸载活动:

adb uninstall com.sand.airdroid

蛮力方法(需要root)

确实存在强力方法。它涉及搜索/ system和/ data文件系统中的所有文件,并删除每个找到的项目。 免责声明:谨慎使用(首先在模拟器上测试)。

adb shell

# Switch to root
su -

# Search for all installed files using the fully-qualified app name
find /system /data -name \*com.sand.airdroid\* 

...出现一个文件列表(包括目录) - 对于每个文件,通过在其前面添加rm -f来删除它:

rm -r /data/media/0/Android/data/com.sand.airdroid
rm -r /data/data/com.sand.airdroid
rm -r /data/app-lib/com.sand.airdroid-1
rm -r /data/app/com.sand.airdroid-1.apk
rm -r /data/dalvik-cache/data@app@com.sand.airdroid-1.apk@classes.dex

# Run the find command again to ensure nothing was missed
find /system /data -name \*com.sand.airdroid\* 

# exit root
exit
# exit Android shell
exit

要允许Android清理其文件,请重新启动设备。

adb reboot

设备重启后,可以使用uninstall命令卸载应用程序以完成清理。

adb uninstall com.sand.airdroid

答案 1 :(得分:1)

“ adb shell pm disable-user pkgname”将停用DeviceAdmin并冻结该应用程序。即使您启用了该应用,它也不会再次处于活动状态。

(在带有8.0 Oreo的Samsung Galaxy S7上测试)

答案 2 :(得分:0)

如果将应用程序设置为Admin,则无法直接卸载应用程序。首先必须禁用管理模式,然后才能卸载应用程序。要先删除活动的管理员,请运行以下命令

adb shell dpm remove-active-admin com.kiosk.example/com.kiosk.example.MyDeviceAdminReceiver 

(com.kiosk.example)是软件包名称,请用您自己的软件包名称替换,而MyDeviceAdminReceiver是接收者名称。如果此命令成功执行,则可以卸载应用程序。或运行此命令以卸载

adb uninstall com.kiosk.example