You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

非ROOT设备执行pm hide命令遇SecurityException权限错误求助

关于pm hide报错及替代方案的说明

为什么会出现这个错误?

你遇到的java.lang.SecurityException: Neither user 10225 nor current process has android.permission.MANAGE_USERS,核心原因很明确:

  • pm hide这个命令需要系统级的MANAGE_USERS权限,而这个权限只有系统预装应用或者ROOT后的用户才能获取
  • 你的手机未ROOT,当前通过adb shell登录的用户(UID 10225是adb默认的非特权用户)没有权限调用这个命令,所以直接触发权限报错。
  • 另外补充个小细节:从Android 11开始,pm hide已经被官方弃用,官方推荐用pm disable系列命令替代。

未ROOT情况下可用的替代命令

根据你的Android版本,试试下面这些命令,大部分未ROOT设备的adb用户可以正常执行:

  • 卸载当前用户的应用(保留全局数据)
    这个命令是把应用从当前主用户(用户ID为0)移除,不会删除应用的全局数据,之后想恢复也很方便:

    pm uninstall --user 0 com.myapp
    

    恢复命令:

    pm install-existing com.myapp
    
  • 禁用当前用户的应用
    这个命令会让应用在当前用户下无法启动,但应用本体还留在设备上:

    pm disable-user --user 0 com.myapp
    

    恢复命令:

    pm enable com.myapp
    

    如果是Android 6到Android 10,也可以尝试简化版:

    pm disable com.myapp
    

注意事项

  • 部分国产ROM对adb命令有额外限制,哪怕是以上命令,可能也会提示权限不足,这种情况没有太好的办法(除非ROOT)。
  • 如果是系统预装的应用,未ROOT状态下几乎无法通过adb命令禁用/卸载,因为系统应用的权限优先级更高。

内容的提问来源于stack exchange,提问作者JoelE

火山引擎 最新活动