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

React Native/Expo升级Android SDK 30后No matching activity错误如何解决?

问题根因

  • no matching activity errors报错确实由Android 11(对应API 30)新增的包可见性限制导致:从SDK 30开始,Android系统对应用的包查询权限做了收紧,默认状态下应用无法检索到设备上安装的全部第三方应用。如果未声明对应查询权限,调用系统浏览器打开HTTP/HTTPS链接时,系统会返回无匹配Activity的错误。
  • 后续的browser has already been launched报错属于Expo WebBrowser模块的状态异常问题:首次调用浏览器触发匹配失败后,模块内部的启动状态标记没有被正确重置,后续所有调用请求都会被判定为重复启动,直接抛出该错误。
  • SDK 29及以下版本无包可见性限制,因此运行完全正常。

解决方案

场景1:Expo托管工作流(未执行eject)

在项目根目录的app.json或app.config.js中添加Android查询配置:

{
  "expo": {
    "android": {
      "queries": {
        "intent": [
          {
            "action": "android.intent.action.VIEW",
            "data": {
              "scheme": "https"
            }
          },
          {
            "action": "android.intent.action.VIEW",
            "data": {
              "scheme": "http"
            }
          }
        ]
      }
    }
  }
}

配置添加完成后重新构建应用包即可生效。

场景2:Expo裸工作流(已执行eject,存在原生Android项目)

修改原生项目路径下的android/app/src/main/AndroidManifest.xml文件,在Manifest根节点下添加声明:

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="https" />
    </intent>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="http" />
    </intent>
</queries>

如果应用需要拉起其他Scheme的链接,可在上述配置中追加对应Scheme的intent声明。

临时验证方案(不可用于上架)

仅用于本地快速验证问题时,可临时将android/build.gradle中的targetSdkVersion降回29,该方案不符合Google Play的上架要求,不可用于生产版本发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:04