从shell禁用DeviceAdmin?

Sha*_*one 8 shell android uninstall administrator adb

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

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

CJB*_*JBS 16

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

干净的方法

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

也可以使用shell打开这个活动:

adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"
Run Code Online (Sandbox Code Playgroud)

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

adb uninstall com.sand.airdroid
Run Code Online (Sandbox Code Playgroud)

蛮力方法(需要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\* 
Run Code Online (Sandbox Code Playgroud)

...出现一个文件列表(包括目录) - 对于每个文件,通过在前面添加一个文件来删除它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
Run Code Online (Sandbox Code Playgroud)

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

adb reboot
Run Code Online (Sandbox Code Playgroud)

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

adb uninstall com.sand.airdroid
Run Code Online (Sandbox Code Playgroud)


Ing*_*121 5

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

  • 然后,一旦应用程序处于禁用状态,您就可以调用“卸载”命令进行卸载。这是真正的非根解决方案。 (2认同)