React Native使用react-native-contacts联系人权限始终返回被拒无弹窗
问题原因及解决方案
核心原因
你没有在AndroidManifest.xml中静态声明代码里动态申请的READ_CONTACTS权限。Android系统要求所有动态申请的危险权限必须先在清单文件中完成静态注册,否则会直接返回权限拒绝,不会弹出权限申请弹窗。你当前的权限声明只有两条:
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" />
缺少读取联系人必需的READ_CONTACTS权限声明。
解决步骤
- 先在
android/app/src/main/AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.READ_CONTACTS" />
- 卸载设备上已安装的该应用,避免之前的权限拒绝缓存(如果曾经勾选过“不再询问”,后续申请会直接被拒)
- 重新编译运行项目即可正常弹出权限申请框。
其他排查点
- 如果你项目的
targetSdkVersion>= 33(Android 13及以上),确认没有混淆权限相关配置,READ_CONTACTS权限在Android 13上依然有效,无需替换为其他权限。 - 如果你使用的是React Native 0.60及以上版本,react-native-contacts支持自动链接,不需要手动修改
settings.gradle、build.gradle和MainApplication.java,如果手动配置有语法错误也会导致功能异常,可删除手动添加的配置后重新编译测试。
内容的提问来源于stack exchange,提问作者Shahriar
相关产品推荐
相关产品推荐

