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

Android 14中打开Razorpay支付网关遇SecurityException问题求解

解决Android 14下Razorpay支付网关的SecurityException报错

问题根因

Android 14(API 34)对广播接收器新增了强制安全规则:所有静态、动态注册的接收器必须明确指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED标志,否则直接抛出java.lang.SecurityException。哪怕你已经在Manifest里设了android:exported="true",如果Razorpay SDK内部动态注册接收器时没适配这个规则,照样会报错。

具体解决方法

  • 优先升级Razorpay SDK到最新版
    Razorpay官方已经针对Android 14的要求更新了SDK,直接把你的依赖版本升到最新就能解决大部分问题。比如在Gradle里这么改:

    implementation 'com.razorpay:checkout:1.6.40+' // 替换为当前最新版本号
    
  • 修正Manifest里的接收器配置
    你现有配置里的android:permission=""是空值,这可能会触发额外的安全校验问题,建议直接删掉这个属性,配置改成这样:

    <receiver
        android:name="com.razorpay.RzpTokenReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="rzp.device_token.share" />
        </intent-filter>
    </receiver>
    
  • 手动适配动态注册逻辑(万不得已时用)
    如果升级SDK后还是报错,得检查是否存在动态注册接收器的代码(可能是SDK内部或者你自己加的),注册时必须加上对应的标志:

    // 示例:如果接收器需要接收外部广播,用RECEIVER_EXPORTED
    IntentFilter filter = new IntentFilter("rzp.device_token.share");
    registerReceiver(new RzpTokenReceiver(), filter, Context.RECEIVER_EXPORTED);
    

    要是接收器只处理应用内部的广播,就换成Context.RECEIVER_NOT_EXPORTED。

内容的提问来源于stack exchange,提问作者Devendra Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:02:23