Ted*_*Ted 7 permissions android react-native
在https://reactnative.dev/docs/0.70/permissionsandroid上,它显示此权限适用于版本 0.70:
POST_NOTIFICATION: 'android.permission.POST_NOTIFICATION'
Run Code Online (Sandbox Code Playgroud)
在https://reactnative.dev/docs/permissionsandroid(版本 0.71)上,它显示相同的权限在末尾带有“S”:
POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS'
Run Code Online (Sandbox Code Playgroud)
这是拼写错误吗?
在任何一种情况下,如果我使用上述任何一种,应用程序都会崩溃
IllegalArgumentException:权限为 null 在 android.app.ContextImpl.checkSelfPermission(ContextImpl.java:2222) 在 android.content.ContextWrapper.checkSelfPermission(ContextWrapper.java:931) 在 com.facebook.react.modules.permissions.PermissionsModule.requestPermission( PermissionsModule.java:105) 在 java.lang.reflect.Method.invoke(Method.java)
这样做时:
async requestPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATION, // or POST_NOTIFICATIONS
{
'title': 'TEST',
'message': I18n.t('permissions.locationPermissionMessage')
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
} else {
}
} catch (err) {
}
}
Run Code Online (Sandbox Code Playgroud)
权限在AndroidManifest文件中,已确认。
更新
在build.gradle中设置compileSdkVersion = 33和targetSdkVersion = 33:
requestPermission 的代码看起来不像(我使用的是 0.70.5):
崩溃记录如下:
Moh*_*mad 10
根据源代码,是的,这是一个已修复的拼写错误0.71.*,另请参阅此拉取请求以了解更多详细信息。
但关于崩溃,与常量中的拼写错误无关。首先确保使用编译sdk版本33。并为等于或大于 13(API_LEVEL 33) 的 android 获取此权限
为了在 js 端检查 ANDROID_API_LEVEL 使用DeviceInfo。
async requestPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATION, // or POST_NOTIFICATIONS
{
'title': 'TEST',
'message': I18n.t('permissions.locationPermissionMessage')
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
} else {
}
} catch (err) {
}
}
// where you need to get permission
if (Platform.OS == 'android' && DeviceInfo.getApiLevelSync() >= 33) {
await requestPermission();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4591 次 |
| 最近记录: |