8

我正在尝试从 shell 卸载应用程序,但是该应用程序以设备管理员身份运行,因此shell> adb uninstall com.example.test无法正常工作。

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

4

3 回答 3

18

通常,通过设备管理员屏幕撤销管理访问权限,然后卸载应用程序。在随后的示例中,我将假设 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
于 2015-03-17T07:19:15.867 回答
7

adb shell pm disable-user (package name)将停用 DeviceAdmin 并禁用该应用程序。即使您再次启用该应用程序,它也不会被激活。

于 2018-08-12T11:18:50.797 回答
2

You can not uninstall app directly if it is set as Admin .first you have to disable the admin mode then you will be able to uninstall app. to remove active admin first you run this command

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

(com.kiosk.example) is package name replace it with your own and MyDeviceAdminReceiver is receiver name. when this command give success then you can uninstall app. or run this command to uninstall

adb uninstall com.kiosk.example.

于 2019-04-29T07:36:58.440 回答