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

React Native 0.71.3推送通知失效:Intent.ACTION_CLOSE_SYSTEM_DIALOGS权限缺失

解决方案:修复React Native 0.71.3推送通知的权限缺失问题

1. 补充AndroidManifest权限声明

在android/app/src/main/AndroidManifest.xml中添加对应权限:

<uses-permission android:name="android.permission.CLOSE_SYSTEM_DIALOGS" />

说明:Android 12(API 31)及以上版本中,该权限属于普通权限,仅需在清单中声明即可,无需动态申请。

2. 排查推送SDK兼容性

如果使用第三方推送SDK(如Firebase Messaging、JPush等):

  • 确认SDK版本与React Native 0.71.3的适配性,参考官方文档核对兼容版本范围
  • 尝试更新SDK至最新兼容版,或回退到之前正常运行的版本

3. 检查Intent调用上下文

若自定义代码中触发了Intent.ACTION_CLOSE_SYSTEM_DIALOGS,确保调用时使用Activity上下文而非Application上下文,部分系统Intent对上下文类型有严格要求。

4. 清理缓存并重建项目

  • 清理Android构建缓存:
    cd android && ./gradlew clean
    
  • 重新安装依赖并构建:
    npm install && npx react-native run-android
    

5. 适配Android 13+通知权限

如果应用目标SDK为33及以上,除上述权限外,还需添加通知权限并动态申请:

  1. 在AndroidManifest.xml中声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  1. 在应用启动时添加权限申请逻辑:
import { PermissionsAndroid } from 'react-native';

const requestNotificationPermission = async () => {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
      {
        title: '通知权限申请',
        message: '需要获取通知权限以接收推送消息',
        buttonNeutral: '稍后再说',
        buttonNegative: '取消',
        buttonPositive: '允许',
      },
    );
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('通知权限已获取');
    } else {
      console.log('通知权限被拒绝');
    }
  } catch (err) {
    console.warn(err);
  }
};

内容的提问来源于stack exchange,提问作者Aidin Bašić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:32:06