我想从我的 Android 应用程序启动“扫描新卡”活动。 此功能由 Google 提供,用于扫描并填写
EditText
内的信用卡/借记卡号,是 GMS 自动填充服务的一部分。
我的目的是提供一个按钮来启动此意图,而不是使用自动填充弹出窗口/Ime 选项中显示的现有选项。
我需要开发类似于 Google Play 商店的添加付款方式和 Google 自动填充的添加付款方式的屏幕截图的内容。
我尝试过的:
我尝试了将
autofillHint="creditCardNumber"
添加到 EditText
的传统方法,从而显示使用自动填充服务启动的选项,但是,如果由于某种原因自动填充服务被禁用或未设置为“Google ” 那么“扫描新卡”这个自动填充选项就不会出现。
我尝试使用从
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 的自动填充服务。