uniapp应用中去掉 android.permission.read_phone_state 权限的方法

在UniApp开发中,如何去除AndroidManifest.xml自动生成的android.permission.READ_PHONE_STATE权限?打包APK时发现该权限被默认添加,但实际应用并不需要读取手机状态。尝试在manifest.json中配置"permission-block"无效,修改原生AndroidManifest.xml后每次打包又被覆盖。请问有什么方法可以永久移除这个权限?

2 回复

在manifest.json的App权限配置中,删除android.permission.READ_PHONE_STATE权限。如果使用HBuilderX,可在可视化界面取消勾选该权限。重新打包即可生效。


在 UniApp 中,android.permission.READ_PHONE_STATE 权限通常由某些插件或框架自动引入。要去掉此权限,请按以下步骤操作:

1. 检查并修改 manifest.json

在 UniApp 项目的 manifest.json 文件中,检查是否显式配置了该权限。如果有,直接删除:

{
  "permissions": {
    "android": {
      // 删除或注释掉以下行:
      // "READ_PHONE_STATE"
    }
  }
}

2. 检查原生插件配置

如果使用了第三方原生插件(如某些推送或统计插件),可能自动添加了此权限:

  • 在项目的 nativeplugins 目录中找到对应插件的配置。
  • 检查插件的 androidManifest.xmlplugin.xml 文件,删除包含 READ_PHONE_STATE 的权限声明。

3. 自定义 App 模块配置(如有)

如果项目使用了自定义模块,在 modules 配置中检查并移除相关权限。

4. 重新生成并打包

修改后,重新编译生成 APK:

npm run build:app-plus

或通过 HBuilderX 重新打包。

注意事项:

  • 某些功能(如获取设备 ID)依赖此权限,移除可能导致功能异常。
  • 如果权限由插件强制添加,可能需要联系插件作者或寻找替代插件。

完成以上步骤后,权限将被移除。

回到顶部