如何在已Root设备上获取MODIFY_PHONE_STATE权限
解决Root设备添加
MODIFY_PHONE_STATE权限的问题 我最近在Root手机上运行一个需要处理来电的应用时,碰到了这个异常:
java.lang.SecurityException: Neither user 10174 nor current process has android.permission.MODIFY_PHONE_STATE.
因为MODIFY_PHONE_STATE是系统级权限,正常的运行时权限申请弹窗根本拿不到它,不过既然设备已经Root,咱们可以通过以下两种方式静默授予这个权限,不用弹框:
方法一:通过ADB Shell(电脑端操作)
- 先确保你的手机已经开启USB调试,电脑上的ADB工具能正常连接设备
- 打开命令提示符/终端,输入
adb shell su,回车后如果手机弹出Root授权请求,点击允许,进入Root权限的Shell环境 - 接着执行授予权限的命令,记得把
com.your.app.package换成你自己应用的包名:pm grant com.your.app.package android.permission.MODIFY_PHONE_STATE - 要是想验证权限是否成功授予,可以执行
pm list permissions -d -g | grep MODIFY_PHONE_STATE,能看到你的包名就说明成功了
方法二:直接在手机终端操作(无需电脑)
- 如果你手机上装了终端模拟器(比如Termux或者超级终端),打开它
- 输入
su并回车,获取Root权限(同样需要授权) - 然后执行和上面一样的权限授予命令:
pm grant com.your.app.package android.permission.MODIFY_PHONE_STATE
注意事项
MODIFY_PHONE_STATE权限能直接修改电话状态,风险很高,只给确实需要的应用,避免安全隐患- 部分高版本Android(比如Android 10及以上)对系统权限管控更严格,但Root环境下这个方法依然有效
- 一定要确认应用的包名正确,包名错了命令会执行失败
内容的提问来源于stack exchange,提问作者user565
相关产品推荐
相关产品推荐

