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

Android 14中Stripe Payment Sheet崩溃问题求助

问题

我用Java开发的Android应用集成了Stripe支付模块,通过Stripe Android SDK的Payment Sheet实现付费流程。在Android 14测试设备上,输入银行卡信息后点击支付按钮应用崩溃,其他Android版本运行正常,推测是Android 14测试版的问题。

崩溃时的错误日志如下:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.bigstride.jobportal_company, PID: 9012
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bigstride.jobportal_company/com.stripe.android.payments.StripeBrowserLauncherActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CHOOSER (has extras) }
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:205)
        at android.os.Looper.loop(Looper.java:294)
        at android.app.ActivityThread.main(ActivityThread.java:8176)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
     Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CHOOSER (has extras) }
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2239)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1878)
        at android.app.Activity.startActivityForResult(Activity.java:5589)
        at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:728)
        at androidx.core.app.ActivityCompat$Api16Impl.startActivityForResult(ActivityCompat.java:809)
        at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:246)
        at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:243)
        at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:175)
        at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
        at com.stripe.android.payments.StripeBrowserLauncherActivity.onCreate(StripeBrowserLauncherActivity.kt:56)
        at android.app.Activity.performCreate(Activity.java:8595)
        at android.app.Activity.performCreate(Activity.java:8573)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loopOnce(Looper.java:205) 
        at android.os.Looper.loop(Looper.java:294) 
        at android.app.ActivityThread.main(ActivityThread.java:8176) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 

正常流程是点击支付按钮后跳转到Stripe的链接处理支付,但Android 14里直接崩溃,推测是无法打开浏览器导致的。实现参考了Stripe官方文档,预期是打开浏览器完成支付,实际崩溃终止流程,求解决方案。

解决方案

针对Android 14上出现的ActivityNotFoundException问题,可尝试以下几种解决方式:

  • 升级Stripe Android SDK到最新版本
    Stripe会针对Android新版本的兼容性问题发布修复更新,检查并升级到最新版SDK,大概率能解决这类系统适配问题。

  • 显式指定浏览器打开链接
    在启动浏览器Intent时,显式设置包名指定系统浏览器,避免Android 14上的Chooser Intent无法匹配到可用Activity:

    // 创建打开Stripe链接的Intent
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(stripeUrl));
    // 指定系统浏览器包名,比如Chrome的包名是com.android.chrome
    browserIntent.setPackage("com.android.chrome");
    // 启动前检查是否有可用Activity
    if (browserIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(browserIntent);
    } else {
        // 若Chrome不存在,尝试唤起其他浏览器
        browserIntent.setPackage(null);
        startActivity(Intent.createChooser(browserIntent, "选择浏览器"));
    }
    

    注意:如果使用Stripe SDK的默认跳转逻辑,可能需要自定义StripeBrowserLauncherActivity或者拦截Intent处理逻辑。

  • 检查Android 14的权限和Intent过滤规则
    Android 14对Intent的处理有更严格的限制,确保你的应用声明了必要的权限,并且Stripe相关的Activity配置正确。在AndroidManifest.xml中确认StripeBrowserLauncherActivity的注册:

    <activity
        android:name="com.stripe.android.payments.StripeBrowserLauncherActivity"
        android:exported="true" />
    

    另外,确保应用有android.permission.INTERNET权限。

  • 测试Android 14正式版或更新测试版
    如果是Android 14早期测试版的系统bug,升级到最新的测试版或正式版后问题可能自动消失。


内容的提问来源于stack exchange,提问作者Devarsh Ukani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:44