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

如何通过代码启动Google Autofill的「扫描新卡片」Intent

解决方案:直接启动Google信用卡扫描功能的可行方案

问题核心分析

你尝试直接启动的com.google.android.gms/.autofill.ui.AutofillActivity和com.google.android.gms/.ocr.SecuredCreditCardOcrActivity均为Google Play服务(GMS)的未导出内部组件,Android安全机制禁止第三方应用直接启动未导出的Activity,这就是你遇到Permission Denied异常的根本原因。同时,依赖Autofill服务的方案受限于用户的Autofill设置,无法满足自主触发扫描的需求。

官方可行替代方案:使用Google ML Kit信用卡扫描API

Google官方提供了ML Kit信用卡扫描API,这是专门开放给第三方应用的扫描能力,完全不依赖Autofill服务,可通过按钮直接触发,实现和Google Play商店一致的扫描体验。

实现步骤

  1. 添加依赖
    在app/build.gradle中引入ML Kit信用卡扫描库:
dependencies {
    implementation 'com.google.mlkit:credit-card-scanning:16.0.0-beta1'
}
  1. 申请相机权限
    扫描需要相机权限,在AndroidManifest.xml中声明:
<uses-permission android:name="android.permission.CAMERA" />

并在运行时请求相机权限(Android 6.0+),确保用户授权后再启动扫描。

  1. 启动扫描并处理结果
    在按钮的点击事件中启动扫描界面,获取扫描结果后填充到EditText:
// 按钮点击事件
yourScanButton.setOnClickListener(v -> {
    // 先检查相机权限
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.CAMERA},
                CAMERA_PERMISSION_REQUEST_CODE);
        return;
    }

    // 启动信用卡扫描
    CreditCardScanning.getClient()
            .startScan(this)
            .addOnSuccessListener(creditCardScanResult -> {
                // 扫描成功,提取信息填充到EditText
                String cardNumber = creditCardScanResult.getCardNumber();
                String expiryMonth = creditCardScanResult.getExpiryMonth();
                String expiryYear = creditCardScanResult.getExpiryYear();

                yourCardNumberEditText.setText(cardNumber);
                // 可按需填充有效期等其他字段
            })
            .addOnFailureListener(e -> {
                // 处理扫描失败或用户取消的情况
                Log.e("CardScan", "扫描失败", e);
            });
});

为什么直接启动GMS内部Activity不可行

Android系统中,未导出的组件(android:exported="false")仅允许同一UID的应用或被明确授权的应用启动,第三方应用无法绕过这一限制。你从Logcat中看到的Intent是GMS内部组件间的调用,第三方应用没有权限直接触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:06