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

Ionic6 Capacitor3 Share插件Android12(targetSdk=32)崩溃问题咨询

解决方案

需要修改AndroidManifest.xml配置解决该崩溃,崩溃本质是Android 12(API 31)针对targetSdk≥31的应用新增了两项强制系统限制,旧版本@capacitor/share未做对应适配:

  • 所有PendingIntent必须显式声明可变性标志(FLAG_MUTABLE/FLAG_IMMUTABLE),未声明时调用会直接抛出异常崩溃
  • 应用默认无法查询设备上其他支持处理分享意图的应用,查询无结果时触发分享逻辑崩溃

具体修改步骤

打开android/app/src/main/AndroidManifest.xml文件,做如下调整:

  1. 在<manifest>根节点下新增<queries>声明,配置分享功能需要的包可见权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="你的应用包名">
  <!-- 已有其他manifest节点内容 -->

  <!-- 新增以下queries节点 -->
  <queries>
    <intent>
      <action android:name="android.intent.action.SEND" />
      <data android:mimeType="text/plain" />
    </intent>
    <intent>
      <action android:name="android.intent.action.SEND_MULTIPLE" />
      <data android:mimeType="image/*" />
    </intent>
  </queries>

  <application
    android:name=".MainApplication"
    <!-- 已有其他application属性 -->
  >
  <!-- 已有其他组件声明 -->
  </application>
</manifest>
  1. 如果你使用的@capacitor/share版本低于4.1.0,还需要在<application>标签上新增属性,规避PendingIntent可变性校验导致的崩溃:
<application
  <!-- 保留原有属性,新增下面两行 -->
  xmlns:tools="http://schemas.android.com/tools"
  tools:replace="android:mutablePendingIntentWhitelist"
  android:mutablePendingIntentWhitelist="*">

如果manifest根节点已经声明过tools命名空间,不需要重复在application节点添加,直接加后面两个属性即可。

后续操作

配置修改完成后,执行npx cap sync android命令把web端配置同步到原生项目,重新编译打包即可,在Android 12及以上系统设备上可正常唤起分享面板,不会再出现崩溃。
如果条件允许,建议直接把@capacitor/share升级到最新稳定版,高版本已经原生适配了Android 12的系统规则,只需要添加上述queries包可见性声明即可,不需要额外配置PendingIntent白名单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:45:47