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

Expo SDK 47托管应用中如何打开Android通知设置页面

解决新版Expo SDK打开Android通知设置页面报错问题

问题原因

旧代码依赖的Constants.manifest在新版Expo SDK(SDK 48+)中已被废弃,改为Constants.expoConfig,导致无法正确获取应用包名,最终生成的Intent参数data: 'package:'为空,触发No Activity found to handle Intent错误。

修复后的代码

import * as IntentLauncher from 'expo-intent-launcher';
import Constants from 'expo-constants';

const openNotificationSettings = async () => {
  // 获取应用包名:优先从expoConfig取生产/自定义客户端包名,否则用Expo Go的默认包名
  const pkg = Constants.expoConfig?.android?.package || 'host.exp.exponent';

  try {
    // 尝试直接打开通知设置页面
    await IntentLauncher.startActivityAsync(
      IntentLauncher.ACTION_APP_NOTIFICATION_SETTINGS,
      { data: `package:${pkg}` }
    );
  } catch (err) {
    // 兼容不直接支持通知设置Intent的旧设备,降级打开应用详情设置页
    console.warn('无法直接打开通知设置,跳转至应用详情页');
    await IntentLauncher.startActivityAsync(
      IntentLauncher.ACTION_APPLICATION_DETAILS_SETTINGS,
      { data: `package:${pkg}` }
    );
  }
};

关键说明

  • 包名获取逻辑:新版Expo通过Constants.expoConfig读取app.json/app.config.js中配置的android.package字段,开发环境下该字段为空,自动 fallback 到Expo Go的包名host.exp.exponent。
  • 异常处理:部分Android 7.0以下设备可能不支持直接打开通知设置的Intent,此时降级到应用详情设置页面,用户可手动进入通知设置模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:01:01