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

Android 11/12版本使用Intent Chooser打开UPI支付应用失效求助

Android 11/12 无法弹出支付应用Intent Chooser的解决办法

Android 11及以上版本引入了软件包可见性限制,默认情况下应用无法发现未在声明中指定的第三方应用,这就是支付应用选择器在高版本系统中不显示的核心原因。以下是具体解决步骤:

  • 在AndroidManifest.xml中添加<queries>标签,声明需要访问的支付应用相关信息:

    1. 按支付Intent的Action和Scheme声明(推荐,适配多数支付应用):
      <queries>
          <!-- 适配UPI类支付应用的通用Scheme -->
          <intent>
              <action android:name="android.intent.action.VIEW" />
              <data android:scheme="upi" />
          </intent>
          <!-- 如果你的支付用了自定义Action,也需添加 -->
          <intent>
              <action android:name="你的自定义支付Action" />
          </intent>
      </queries>
      
    2. 按具体应用包名声明(适合明确知道目标支付应用的场景):
      <queries>
          <package android:name="com.google.android.apps.nbu.paisa.user" /> <!-- Google Pay -->
          <package android:name="com.phonepe.app" /> <!-- PhonePe -->
          <package android:name="in.org.npci.upiapp" /> <!-- BHIM UPI -->
          <!-- 添加其他需要支持的支付应用包名 -->
      </queries>
      
  • 检查Intent构造逻辑,确保参数正确并调用createChooser:

    // 以UPI支付为例构造Intent
    Intent paymentIntent = new Intent(Intent.ACTION_VIEW);
    paymentIntent.setData(Uri.parse("upi://pay?pa=收款方UPI&pn=收款方名称&am=金额"));
    // 创建选择器
    Intent chooser = Intent.createChooser(paymentIntent, "选择支付应用");
    // 确认有可处理的应用再启动
    if (paymentIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(chooser);
    }
    
  • 避免滥用QUERY_ALL_PACKAGES权限:这个权限可以绕过软件包可见性限制,但属于敏感权限,Google Play审核时需要提供合理的使用理由,优先使用<queries>精确声明更稳妥。

内容的提问来源于stack exchange,提问作者nihal kapoor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:20:38