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

点击OneSignal通知致App崩溃:ActivityNotFoundException问题排查

排查Android 12 + Capacitor 4下OneSignal通知点击崩溃(ActivityNotFoundException)的方案

核心排查步骤

尽管已添加android:exported="true",仍需逐一验证以下配置:

1. 确认主Activity的完整配置

检查AndroidManifest.xml中主Activity的intent-filter与exported属性,确保OneSignal能正确唤起该页面:

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@style/AppTheme.NoActionBarLaunch">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <!-- 补充OneSignal唤起所需的过滤规则 -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- 若应用使用自定义URL Scheme,在此配置 -->
        <data android:scheme="your-app-scheme" />
    </intent-filter>
</activity>

2. 检查OneSignal通知的目标Activity

  • 若通过OneSignal控制台配置通知,确认「Launch URL」或「Open App」选项指向的Activity名称正确
  • 若通过代码构建通知,确保setLaunchActivity方法指定的是.MainActivity或完整类路径

3. 验证所有带intent-filter的Activity导出属性

Capacitor 4要求Android 12下所有配置intent-filter的Activity必须显式设置android:exported,检查项目中其他相关Activity(如SplashScreenActivity):

<activity
    android:name="com.getcapacitor.plugins.splashscreen.SplashScreenActivity"
    android:exported="true"
    android:theme="@style/AppTheme.NoActionBarLaunch">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

若同时配置了启动页与主Activity的入口,需确保两者exported均为true,且通知触发的是正确的页面。

4. 定位堆栈跟踪中的缺失Activity

从提供的堆栈日志中,找到ActivityNotFoundException具体指向的Activity名称:

  • 若为OneSignal内部Activity,需升级SDK至适配Android 12的最新稳定版
  • 若为自定义Activity,确认其已在AndroidManifest.xml中注册且exported属性正确

5. 清理构建缓存并重建项目

执行以下操作排除缓存问题:

  • 运行./gradlew clean清理Android项目
  • 删除Android Studio的.idea和build文件夹
  • 重新同步Gradle并构建应用

6. 确认OneSignal SDK版本兼容性

确保使用的OneSignal SDK版本适配Capacitor 4与Android 12,建议升级到@onesignal/capacitor或onesignal-cordova-plugin的最新稳定版本,避免版本不兼容导致的Activity解析错误。

内容的提问来源于stack exchange,提问作者De Wet van As

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:01:39