You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用未声明电话权限却在设置中显示的问题排查求助

排查方向及版本相关说明
  • 检查第三方依赖的隐式权限
    这种情况大多是第三方SDK(广告、统计、推送、地图类等)在自身Manifest中声明了电话权限,通过Android的Manifest合并机制被添加到你的应用中。你可以在Android Studio中打开项目的AndroidManifest.xml,切换到底部的Merged Manifest标签,搜索android.permission.CALL_PHONE、android.permission.READ_PHONE_STATE等电话相关权限,查看右侧的"Merge Source"列,就能定位到是哪个依赖库引入的权限。如果不需要该权限,可以在自己的Manifest中移除:

    <uses-permission android:name="android.permission.CALL_PHONE" tools:node="remove" />
    
  • 核对构建变体的Manifest文件
    如果你使用了productFlavors或buildTypes(比如debug/release变体),不同变体对应的src目录下可能存在单独的AndroidManifest.xml,这些文件里可能声明了电话权限。检查src/debug/AndroidManifest.xml、src/release/AndroidManifest.xml或者对应 flavor 目录下的Manifest文件。

  • 排查动态权限申请的调用
    虽然你没有主动调用,但部分第三方库可能在代码中动态申请电话权限。可以全局搜索项目中的requestPermissions方法,或者搜索电话权限常量(比如Manifest.permission.CALL_PHONE),确认是否有第三方库触发了权限申请。即使未授权,Android系统也会在应用设置中显示该权限选项。

  • Android版本相关特性

    • Android 8.0(API 26)之前:权限采用安装时授予机制,只要Manifest中存在权限声明(包括依赖库引入的),应用设置中就会显示该权限且状态为已授予。
    • Android 8.0及之后:运行时权限机制下,即使Manifest中存在权限声明(含依赖引入),设置中会显示该权限选项,但默认状态为未授予,直到应用主动申请。如果你的应用在8.0以上设备显示该权限,大概率是依赖库引入了权限声明。
    • Android 12(API 31)及更高版本:权限分组逻辑更严格,但电话权限组的显示规则未发生根本性变化,核心还是Manifest中是否存在显式或隐式的权限声明。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:55:05