React Native安卓权限弹窗显示包名.MainActivity,如何改为显示应用名?
我之前也踩过这个坑!你遇到的问题本质是安卓系统默认会把packagename.MainActivity作为权限请求的发起者显示,但其实只要调整一下安卓原生的配置,就能让弹窗显示你的应用名称,完全不用纠结React Native里PermissionsAndroid的参数限制。
下面是具体的解决步骤:
检查并修改AndroidManifest.xml的应用标签
打开android/app/src/main/AndroidManifest.xml,找到<application>标签,确保它包含android:label="@string/app_name"这个属性。这个属性会告诉安卓系统用你定义的应用名称来代替包名+Activity名。示例代码如下:<application android:name=".MainApplication" android:label="@string/app_name" <!-- 这行是关键 --> android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <!-- 你的Activity和其他配置 --> </application>确认strings.xml里的应用名称正确
打开android/app/src/main/res/values/strings.xml,里面的<string name="app_name">标签内容就是你要显示的应用名称。把它改成你想要的名字就行,比如:<resources> <string name="app_name">Cool Photo App</string> </resources>适配Android 13+的小提醒
如果你的应用目标SDK是33及以上,WRITE_EXTERNAL_STORAGE权限已经被废弃,需要改用READ_MEDIA_IMAGES或者READ_MEDIA_VIDEO这类新权限,但上面的配置依然有效,弹窗还是会显示你在strings.xml里设置的应用名称。
至于你提到的PermissionsAndroid里的title和message参数为什么没起作用——其实在很多安卓版本(尤其是高版本)里,系统会忽略这些自定义参数,优先使用原生配置里的应用名称和系统默认的权限提示文案。所以修改原生配置才是最可靠的解决方式。
内容的提问来源于stack exchange,提问作者Jaro

