如何以编程方式启动 Google 自动填充的“扫描新卡”意图

问题描述 投票:0回答:1

我想从我的 Android 应用程序启动“扫描新卡”活动。 此功能由 Google 提供,用于扫描并填写

EditText
内的信用卡/借记卡号,是 GMS 自动填充服务的一部分。

我的目的是提供一个按钮来启动此意图,而不是使用自动填充弹出窗口/Ime 选项中显示的现有选项。

我需要开发类似于 Google Play 商店的添加付款方式和 Google 自动填充的添加付款方式的屏幕截图的内容。

Google Play 商店添加付款方式 Google 自动填充的添加付款方式 通过自动填充扫描新卡输入法选项
Google Play Store's Add Payment method Google Autofill's Add Payment method Scan New Card IME option via Autofill

我尝试过的:

  1. 我尝试了将

    autofillHint="creditCardNumber"
    添加到
    EditText
    的传统方法,从而显示使用自动填充服务启动的选项,但是,如果由于某种原因自动填充服务被禁用或未设置为“Google ” 那么“扫描新卡”这个自动填充选项就不会出现。

  2. 我尝试使用从

    Logcat
    中找到的活动和包名称直接启动意图,但是抛出了
    Permission Denied: Activity not exported

我的发现:

单击 Google 自动填充服务提供的“扫描新卡”选项时的 Logcat 输出:

START u0 {act=SCAN_PAYMENT_CARD cmp=com.google.android.gms/.autofill.ui.AutofillActivity (has extras)} from uid 10102
START u0 {act=com.google.android.gms.ocr.ACTION_CREDIT_CARD_OCR pkg=com.google.android.gms cmp=com.google.android.gms/.ocr.SecuredCreditCardOcrActivity (has extras)} from uid 10102

直接使用 Activity 和 Package 名称启动上述 Intent 时的 Logcat 输出:

Permission Denial: starting Intent { act=SCAN_PAYMENT_CARD cmp=com.google.android.gms/.autofill.ui.AutofillActivity } from ProcessRecord{a45d996 13710:com.example.activity/u0a88} (pid=13710, uid=10088) not exported from uid 10013
FATAL EXCEPTION: main
Process: com.example.activity, PID: 13710
java.lang.SecurityException: Permission Denial: starting Intent { act=SCAN_PAYMENT_CARD cmp=com.google.android.gms/.autofill.ui.AutofillActivity } from ProcessRecord{a45d996 13710:com.example.activity/u0a88} (pid=13710, uid=10088) not exported from uid 10013

TLDR:我想直接通过单击应用程序中的按钮来启动以下屏幕,而不是依赖于 Google 的自动填充服务。

Scan a Card Activity provided by Google's Autofill Service

android google-play-services ocr autofill credit-card
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.