uniapp开发的app为什么首次打开会申请电话权限?代码里没有申请权限

我在使用uniapp开发的APP中遇到了一个奇怪的问题:应用首次打开时会自动申请电话权限,但我在代码中并没有主动申请这个权限。检查了manifest.json和所有插件配置,都没有找到相关权限申请。想请教大家:

  1. 为什么会出现这种情况?
  2. 是否是uniapp框架或某些内置模块默认触发的?
  3. 如何彻底移除这个权限申请?
    (测试环境:Android端,HBuilderX 3.6.18)
2 回复

uniapp框架默认会请求电话权限,用于获取设备信息(如IMEI)作为设备唯一标识,便于统计和推送。即使代码未主动申请,底层SDK可能自动触发。可在manifest.json中取消相关权限配置。


UniApp 应用首次打开时申请电话权限,通常与以下原因相关:

  1. 第三方 SDK 自动申请权限
    即使你的代码未主动申请权限,集成的第三方插件或 SDK(如推送、统计、社交登录等)可能在初始化时自动请求 READ_PHONE_STATE 权限,用于获取设备标识(如 IMEI)。检查 manifest.json 中集成的插件或模块配置。

  2. UniApp 框架或原生平台默认行为
    部分 Android 系统或厂商定制系统会默认检测应用可能需要的权限,并提前申请。可尝试在 manifest.jsonApp模块配置 中取消勾选不必要的原生模块。

  3. 配置文件中声明了权限
    检查 manifest.jsonAndroid权限配置 是否包含 READ_PHONE_STATE 或其他电话相关权限。若有,删除无需的权限声明。

解决方法:

  • 排查第三方 SDK:移除未使用的插件,或联系插件作者确认权限申请逻辑。
  • 修改权限配置:在 manifest.json 中仅保留必要权限:
    {
      "permissions": {
        "request": ["不需要的权限可删除"]
      }
    }
    
  • 原生平台配置:在 Android 原生工程中检查 AndroidManifest.xml,删除冗余权限声明。

通过以上调整,可避免非必要的权限申请。

回到顶部