是否从shell禁用DeviceAdmin?

jdgnovmf  于 2022-11-16  发布在  Shell
关注(0)|答案(3)|浏览(140)

我试图从shell卸载一个应用程序,但是这个应用程序是以设备管理员的身份运行的,因此shell> adb uninstall com.example.test不起作用。
如何从shell禁用设备管理员?

iaqfqrcu

iaqfqrcu1#

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

清洁方法

要访问 * 设备管理员 *,请导航:设置安全性设备管理员。然后,取消选中要取消设置管理访问权限的应用程序。
也可以使用shell打开此Activity:

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

完成此操作后,即可正常卸载Activity:

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
pjngdqdw

pjngdqdw2#

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

e1xvtsh3

e1xvtsh33#

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

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

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

adb uninstall com.kiosk.example

相关问题