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

Android 10系统WebView中Scan new card信用卡扫描功能异常咨询

解决方案

问题1:Android 10设备不显示「Scan new card」选项

根因

Android 10对WebView的自动填充能力、权限管控做了升级,缺少对应配置、相机权限未授权都会导致系统不触发信用卡扫描入口。

修复步骤

  • 补充WebView基础配置,在原有onCreate的WebSettings逻辑中添加以下代码:
webSettings.setDomStorageEnabled(true);
webSettings.setSaveFormData(true);
// 适配Android 8+系统自动填充框架
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    mWebView.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_YES);
}
// 配置WebChromeClient支持相机权限请求
mWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onPermissionRequest(PermissionRequest request) {
        request.grant(request.getResources());
    }
});
  • 提前申请相机权限:在加载WebView页面之前,先动态向用户申请CAMERA权限,同时在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
  • 确保设备Android System WebView版本 ≥ 76,低版本WebView不支持原生信用卡扫描触发逻辑。

问题2:Android 8设备无法获取持卡人姓名

根因

Android 8.x版本的系统自动填充框架对cc-name属性适配存在缺陷,部分厂商自带的扫描服务默认不会返回持卡人姓名字段。

修复步骤

  • 调整HTML输入框属性,增加兼容标识:
<input autocomplete="cc-name name" id="nameoncard" name="cc-name nameoncard" type="text">
  • 做降级兼容:如果扫描完成后持卡人姓名字段为空,直接弹出提示引导用户手动补填即可,Android 8.x的系统级扫描服务本身存在该类适配问题,没有100%能强制返回姓名的方案。
  • 若需要完全规避系统适配问题,可以自己集成第三方信用卡扫描SDK,扫描拿到所有卡片信息后通过JS注入的方式赋值到HTML输入框:
// 扫描成功后执行以下代码注入字段
mWebView.evaluateJavascript("document.getElementById('nameoncard').value = '"+扫描获取的持卡人姓名+"';", null);
// 同理注入卡号、有效期等其他字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:21:01