React Native应用因READ_CALL_LOG权限遭Google Play控制台拒绝求助
解决Google Play因通话日志权限拒审的实操方案
得先明确:Google Play对READ_CALL_LOG这类敏感权限审核极严,属于高风险隐私权限,必须完全匹配应用核心功能,且绝对不能在应用被杀死后无必要调用这类权限。
核心自查&修复方向
- 砍掉非必要权限:先确认你的Socket应用是否真的需要在被杀死时读取通话日志?如果这不是核心功能,直接删除
READ_CALL_LOG权限,改用非敏感方式实现需求——比如通过前台服务监听通话状态,根本无需读取通话日志。 - 权限声明要精准落地:在Google Play控制台的权限声明板块,必须明确写出使用
READ_CALL_LOG的具体场景,比如“仅在用户发起Socket语音通话时,读取最近通话记录快速匹配联系人”,且该场景必须是应用的核心功能,不能是可有可无的附加功能。 - 清理隐式引入的权限:你添加的
<uses-permission android:name="android.permission.RECEIVE_SMS" tools:node="remove" />仅处理了短信权限,但拒审根源还是通话日志权限。检查是否有依赖库偷偷引入了通话相关权限,可用以下命令排查:
找到带通话权限的依赖后,用./gradlew app:dependenciestools:node="remove"删掉对应的权限声明。
替代方案:无需读取通话日志也能监听通话状态
如果确实需要监听通话状态,完全没必要读取通话日志:可以使用风险更低的PROCESS_OUTGOING_CALLS权限配合广播接收器,或者用TelephonyManager的监听接口,只在应用存活时监听状态变化,避免在应用被杀死后触发权限调用。
申诉需注意的细节
- 重新完善权限声明:在Google Play控制台「应用内容」→「权限」中,详细说明使用
READ_CALL_LOG的场景、用户受益点,以及隐私保护措施(比如数据仅本地处理、不上传服务器等)。 - 附上功能演示视频:录制短视频展示应用使用通话日志权限的具体场景,证明该功能是核心且必要的。
- 清理Manifest冗余权限:只保留应用必需的权限,每个权限都要有对应的功能支撑。
内容的提问来源于stack exchange,提问作者user21588478
相关产品推荐
相关产品推荐

