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

React Native 0.70/0.71 PermissionsAndroid权限差异及崩溃问题

问题解答

1. 权限常量名称变化并非笔误

文档里的权限名称差异是正常的版本适配:

  • Android 12及以下(API <33)的通知权限为android.permission.POST_NOTIFICATION,React Native 0.70版本文档对应这个旧权限名
  • Android 13(API 33)将通知权限重命名为android.permission.POST_NOTIFICATIONS,React Native 0.71及以上版本文档适配了这个新权限名

2. 崩溃原因:RN 0.70.5未内置该权限常量

你使用的React Native 0.70.5版本中,PermissionsAndroid.PERMISSIONS里不存在POST_NOTIFICATION或POST_NOTIFICATIONS这两个常量,直接调用会得到undefined,传递给PermissionsAndroid.request后就触发了permission is null的异常。

3. 解决方案

方案一:直接使用权限字符串替代常量

既然已设置compileSdkVersion=33和targetSdkVersion=33,直接传入完整权限字符串即可:

async requestPermission() {
    try {
      const granted = await PermissionsAndroid.request(
        'android.permission.POST_NOTIFICATIONS', // 直接使用权限字符串
        {
          title: 'TEST',
          message: I18n.t('permissions.locationPermissionMessage')
        }
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        // 权限已授予后的逻辑
      } else {
        // 权限被拒绝后的逻辑
      }
    } catch (err) {
      console.error(err);
    }
  }

方案二:添加Android版本判断(兼容旧系统)

如果需要兼容Android 12及以下设备,注意这类系统无需主动请求通知权限,仅在Android 13+时发起请求:

import { Platform } from 'react-native';

async requestPermission() {
    if (Platform.OS === 'android' && Platform.Version >= 33) {
      try {
        const granted = await PermissionsAndroid.request(
          'android.permission.POST_NOTIFICATIONS',
          {
            title: 'TEST',
            message: I18n.t('permissions.locationPermissionMessage')
          }
        )
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          // 权限已授予后的逻辑
        } else {
          // 权限被拒绝后的逻辑
        }
      } catch (err) {
        console.error(err);
      }
    }
  }

方案三:升级RN版本到0.71+

若愿意升级React Native到0.71及以上版本,就可以直接使用内置的PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS常量,无需手动编写权限字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:45:53