Ví truy cập nhanh

Tính năng Ví truy cập nhanh, có sẵn từ Android 11, cho phép người dùng truy cập thẻ thanh toán và các thẻ có liên quan trực tiếp từ menu nguồn. Các trường hợp sử dụng chính bao gồm chọn phương thức thanh toán phù hợp trước khi thực hiện giao dịch tại thiết bị đầu cuối NFC và truy cập nhanh vào các chuyến bay cũng như các thẻ khác cho các sự kiện sắp tới.

Trong Android 12 trở lên, tính năng Ví truy cập nhanh có sẵn từ phần bóng mờ như trong Hình 1 và Hình 2.

Tính năng Ví truy cập nhanh trong bóng râm
Hình 1. Tính năng Ví truy cập nhanh (thiết bị bị khóa).
Tính năng Ví truy cập nhanh trong bóng râm
Hình 2. Tính năng Ví truy cập nhanh (đã mở khóa thiết bị).

Trong Android 11, tính năng này có sẵn từ menu nguồn như trong Hình 3.

Tính năng Ví truy cập nhanh trong menu nguồn
Hình 3. Tính năng Ví truy cập nhanh trong menu nguồn.

Yêu cầu

Thiết bị của bạn phải có NFC để sử dụng tính năng Ví truy cập nhanh. Tính năng này liên kết với QuickAccessWalletService của ứng dụng thanh toán NFC mặc định, có nghĩa là thiết bị cũng phải hỗ trợ mô phỏng thẻ dựa trên máy chủ NFC (HCE) .

Tổng quan về tính năng

Ví truy cập nhanh có hai phần: Giao diện người dùng Ví truy cập nhanh và nhà cung cấp thẻ Ví truy cập nhanh.

Trong Android 12 trở lên, giao diện người dùng Wallet chạy trong giao diện người dùng hệ thống và nằm trong frameworks/base/packages/SystemUI/src/com/android/systemui/wallet . Trong Android 11, giao diện người dùng Wallet nằm trong platform/packages/apps/QuickAccessWallet phải được cài đặt và đưa vào danh sách cho phép.

Nhà cung cấp thẻ Quick Access Wallet là ứng dụng thanh toán NFC mặc định. Người dùng có thể cài đặt đồng thời nhiều ứng dụng thanh toán NFC nhưng chỉ ứng dụng thanh toán NFC mặc định mới có thể hiển thị thẻ trên menu nguồn. Bạn có thể chỉ định ứng dụng thanh toán NFC nào được đặt làm mặc định ban đầu nhưng người dùng có thể chọn ứng dụng khác trong Cài đặt. Nếu chỉ cài đặt một ứng dụng thanh toán NFC, ứng dụng đó sẽ tự động trở thành ứng dụng mặc định (xem CardEmulationManager ).

Thực hiện

Để cung cấp thẻ cho Giao diện người dùng Ví truy cập nhanh, các ứng dụng thanh toán NFC phải triển khai QuickAccessWalletService . Ứng dụng thanh toán phải bao gồm mục nhập bảng kê khai quảng cáo dịch vụ.

Để đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với QuickAccessWalletService , ứng dụng thanh toán NFC phải yêu cầu quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE . Việc yêu cầu quyền này đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với QuickAccessWalletService .

<service
     android:name=".MyQuickAccessWalletService"
     android:label="@string/my_default_tile_label"
     android:icon="@drawable/my_default_icon_label"
     android:logo="@drawable/my_wallet_logo"
     android:permission="android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE">
     <intent-filter>
         <action android:name="android.service.quickaccesswallet.QuickAccessWalletService" />
         <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
     <meta-data android:name="android.quickaccesswallet"
          android:resource="@xml/quickaccesswallet_configuration" />
     <meta-data
          android:name="android.quickaccesswallet.tile"
          android:resource="@drawable/my_default_tile_icon"/>
</service>

Thông tin bổ sung về ví được bao gồm trong tệp XML được liên kết:

<quickaccesswallet-service
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:settingsActivity="com.example.android.SettingsActivity"
   android:shortcutLongLabel="@string/my_wallet_empty_state_text"
   android:shortcutShortLabel="@string/my_wallet_button_text"
   android:targetActivity="com.example.android.WalletActivity"/>

Tiếp theo, ứng dụng thanh toán phải triển khai QuickAccessWalletService :

public class MyQuickAccessWalletService extends QuickAccessWalletService {

    @Override
    public void onWalletCardsRequested(
            GetWalletCardsRequest request,
            GetWalletCardsCallback callback) {
        GetWalletCardsResponse response = // generate response
        callback.onSuccess(response);
    }

    @Override
    public void onWalletCardSelected(SelectWalletCardRequest request) {
        // selecting a card should ensure that it is used when making an NFC payment
    }

    @Override
    public void onWalletDismissed() {
        // May un-select card if the wallet app has the concept of a 'default'
        // payment method
    }
}

Nếu HostApduService bắt đầu xử lý một giao dịch NFC và do đó, bắt đầu một hoạt động để hiển thị tiến trình và kết quả của khoản thanh toán, thì nó cũng nên cố gắng tham chiếu đến QuickAccessWalletService bị ràng buộc và gọi QuickAccessWalletService#sendEvent với loại sự kiện TYPE_NFC_PAYMENT_STARTED . Điều này khiến giao diện người dùng Ví truy cập nhanh bị loại bỏ, do đó cho phép người dùng xem hoạt động thanh toán mà không bị cản trở.

Để biết thêm tài liệu về cách triển khai QuickAccessWalletService , hãy xem bài kiểm tra QuickAccessWalletServiceTestQuickAccessWalletService CTS.

Kích hoạt giao diện người dùng Ví truy cập nhanh trong Android 11

Để định cấu hình Ví truy cập nhanh khả dụng từ menu nguồn trong Android 11, hãy đưa mục tiêu QuickAccessWallet vào bản dựng và bật plugin globalactions.wallet bằng cách thêm dòng in đậm trong mẫu mã bên dưới vào overlay/frameworks/base/packages/SystemUI/res/values/config.xml tệp overlay/frameworks/base/packages/SystemUI/res/values/config.xml .

<resources>
    ...
    <!-- SystemUI Plugins that can be loaded on user builds. -->
    <string-array name="config_pluginWhitelist" translatable="false">
        <item>com.android.systemui</item>
        <item>com.android.systemui.plugin.globalactions.wallet</item>
    </string-array>
</resources>

Chỉ định ứng dụng thanh toán NFC mặc định trong tệp cấu hình cài đặt bằng cách sử dụng def_nfc_payment_component .

Ứng dụng thanh toán NFC mặc định phải hiển thị QuickAccessWalletService để cung cấp thẻ cho Ví truy cập nhanh. Nếu ứng dụng thanh toán NFC mặc định không xuất dịch vụ này thì giao diện người dùng ví sẽ bị ẩn.

Chi tiết triển khai QuickAccessWalletService

QuickAccessWalletService có ba phương thức trừu tượng phải được triển khai: onWalletCardsRequested , onWalletCardSelectedonWalletDismissed . Sơ đồ trình tự bên dưới minh họa trình tự cuộc gọi khi Ví truy cập nhanh được xem ngay trước khoản thanh toán NFC.

Sơ đồ trình tự Ví truy cập nhanh

Chuỗi cuộc gọi ví dụ khi xem Ví truy cập nhanh
Hình 4. Ví dụ về chuỗi lệnh gọi khi xem Ví truy cập nhanh.

Không phải tất cả các chế độ xem của Quick Access Wallet đều được thực hiện bằng thanh toán NFC nhưng Hình 4 ở trên minh họa tất cả các khả năng của QuickAccessWalletService . Trong ví dụ này, nhà cung cấp thẻ Ví truy cập nhanh triển khai các phần tử được viền màu xanh lam. Giả định rằng thẻ thanh toán được lưu trữ trên thiết bị trong cơ sở dữ liệu và được truy cập thông qua giao diện có tên PaymentCardManager . Người ta còn giả định rằng một hoạt động có tên PaymentActivity hiển thị kết quả thanh toán NFC. Dòng chảy diễn ra như sau:

  1. Người dùng thực hiện cử chỉ để hiển thị Ví truy cập nhanh.
  2. Giao diện người dùng Ví truy cập nhanh (một phần của Giao diện người dùng hệ thống) kiểm tra trình quản lý gói để xem liệu ứng dụng thanh toán NFC mặc định có xuất QuickAccessWalletService hay không.

    • Nếu dịch vụ không được xuất, Ví truy cập nhanh sẽ không được hiển thị.
  3. Giao diện người dùng Ví truy cập nhanh liên kết với QuickAccessWalletService và gọi onWalletCardsRequested . Phương thức này nhận một đối tượng yêu cầu chứa dữ liệu về số lượng và kích thước của thẻ có thể được cung cấp và lệnh gọi lại. Cuộc gọi lại có thể được gọi từ một chuỗi nền.

  4. QuickAccessWalletService tính toán các thẻ mà nó muốn hiển thị, sau đó gọi phương thức onSuccess trên lệnh gọi lại được cung cấp. Chúng tôi khuyên dịch vụ nên thực hiện những hành động này trên một luồng nền.

  5. Ngay sau khi các thẻ được hiển thị, Giao diện người dùng hệ thống sẽ thông báo cho QuickAccessWalletService rằng thẻ đầu tiên đã được chọn bằng cách gọi onWalletCardSelected .

    • onWalletCardSelected được gọi mỗi khi người dùng chọn thẻ mới.
    • onWalletCardSelected có thể được gọi ngay cả khi thẻ hiện được chọn không thay đổi.
  6. Khi người dùng loại bỏ Ví truy cập nhanh, Giao diện người dùng hệ thống sẽ thông báo cho QuickAccessWalletService bằng cách gọi onWalletDismissed .

Trong ví dụ trên, người dùng mang điện thoại vào phạm vi phủ sóng của thiết bị đầu cuối thanh toán NFC trong khi ví đang được hiển thị. Thành phần chính trong việc xử lý thanh toán NFC là HostApduService , thành phần này phải được triển khai để xử lý APDU do đầu đọc NFC cung cấp (để biết thêm thông tin, hãy xem Mô phỏng thẻ dựa trên máy chủ ). Giả định rằng ứng dụng thanh toán bắt đầu một hoạt động để hiển thị tiến trình và kết quả tương tác với thiết bị đầu cuối NFC. Tuy nhiên, giao diện người dùng Ví truy cập nhanh được hiển thị ở đầu cửa sổ ứng dụng, nghĩa là hoạt động thanh toán bị che khuất bởi giao diện người dùng Ví truy cập nhanh. Để khắc phục điều này, ứng dụng phải thông báo cho Giao diện người dùng hệ thống rằng Giao diện người dùng Ví truy cập nhanh sẽ bị loại bỏ. Nó có thể làm như vậy bằng cách tham chiếu đến QuickAccessWalletService bị ràng buộc và gọi sendWalletServiceEvent với loại sự kiện TYPE_NFC_PAYMENT_STARTED .

Triển khai mẫu QuickAccessWalletService

/** Sample implementation of {@link QuickAccessWalletService} */
@RequiresApi(VERSION_CODES.R)
public class MyQuickAccessWalletService extends QuickAccessWalletService {

  private static final String TAG = "QAWalletSvc";
  private ExecutorService executor;
  private PaymentCardManager paymentCardManager;

  @Override
  public void onCreate() {
    super.onCreate();
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      Log.w(TAG, "Should not run on pre-R devices");
      stopSelf();
      return;
    }
    executor = Executors.newSingleThreadExecutor();
    paymentCardManager = new PaymentCardManager();
  }

  @Override
  public void onDestroy() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.shutdownNow();
  }

  @Override
  public void onWalletCardsRequested(
      @NonNull GetWalletCardsRequest request, @NonNull GetWalletCardsCallback callback) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> {
          List<PaymentCard> paymentCards = paymentCardManager.getCards();
          int maxCards = Math.min(paymentCards.size(), request.getMaxCards());
          List<WalletCard> walletCards = new ArrayList<>(maxCards);
          int selectedIndex = 0;
          int cardWidthPx = request.getCardWidthPx();
          int cardHeightPx = request.getCardHeightPx();
          for (int index = 0; index < maxCards; index++) {
            PaymentCard paymentCard = paymentCards.get(index);
            WalletCard walletCard =
                new WalletCard.Builder(
                        paymentCard.getCardId(),
                        paymentCard.getCardImage(cardWidthPx, cardHeightPx),
                        paymentCard.getContentDescription(),
                        paymentCard.getPendingIntent())
                    .build();
            walletCards.add(walletCard);
            if (paymentCard.isSelected()) {
              selectedIndex = index;
            }
          }
          GetWalletCardsResponse response =
              new GetWalletCardsResponse(walletCards, selectedIndex);
          callback.onSuccess(response);
        });
  }

  @Override
  public void onWalletCardSelected(@NonNull SelectWalletCardRequest request) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> paymentCardManager.selectCardById(request.getCardId()));
  }

  @Override
  public void onWalletDismissed() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(() -> {
      paymentCardManager.removeCardOverrides();
    });
  }
}

Để biết thêm chi tiết về QuickAccessWalletService , hãy xem tài liệu tham khảo API QuickAccessWalletService .

Quyền

Mục nhập tệp kê khai cho QuickAccessWalletService phải yêu cầu quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE được giới thiệu trong Android 11. Đây là quyền cấp chữ ký do Giao diện người dùng hệ thống nắm giữ, nghĩa là chỉ quy trình Giao diện người dùng hệ thống mới có thể liên kết với việc triển khai QuickAccessWalletService . Xin lưu ý rằng các ứng dụng được tải bên cạnh có thể yêu cầu quyền này và có toàn quyền truy cập vào dữ liệu QuickAccessWalletService trên các thiết bị chạy Android 10 trở xuống. Để ngăn chặn điều này, dịch vụ nên kiểm tra phiên bản xây dựng trong onCreate và chỉ bật dịch vụ trên các thiết bị chạy Android 11 trở lên. Không có quyền ứng dụng nào khác được yêu cầu ngoài những quyền cần thiết để cung cấp dịch vụ thanh toán mô phỏng thẻ máy chủ.

Nếu ứng dụng thanh toán NFC mặc định không triển khai hoặc xuất QuickAccessWalletService thì giao diện người dùng Ví truy cập nhanh sẽ không được hiển thị.

Cài đặt trong Android 12

Để bật hoặc tắt Ví truy cập nhanh từ màn hình khóa, người dùng có thể sử dụng nút chuyển đổi Hiển thị ví trong Cài đặt > Hiển thị > Màn hình khóa . Để vô hiệu hóa ví trong bóng râm, người dùng phải chỉnh sửa thủ công trong bóng cài đặt nhanh.

Chuyển đổi để bật hoặc tắt ví từ màn hình khóa

Hình 5. Hiển thị chuyển đổi ví trong trang Màn hình khóa trong Cài đặt.

Cài đặt trong Android 11

Người dùng có thể tắt tính năng Quick Access Wallet từ ứng dụng Cài đặt. Trang cài đặt được tìm thấy trong Cài đặt > Hệ thống > Cử chỉ > Thẻ & thẻ .

Trang cài đặt để bật hoặc tắt tính năng Ví truy cập nhanh
Hình 6. Trang cài đặt để bật hoặc tắt tính năng Ví truy cập nhanh.

Tùy chỉnh

Thêm chế độ xem Ví truy cập nhanh vào một vị trí khác trong Giao diện người dùng hệ thống

Giao diện người dùng Ví truy cập nhanh được xây dựng dưới dạng plugin hệ thống . Mặc dù việc triển khai AOSP sử dụng nó trong GlobalActionsDialog (hiển thị khi nhấn lâu), bạn có thể di chuyển tính năng này sau một cử chỉ khác miễn là bạn duy trì hợp đồng được chỉ định bởi giao diện plugin.

public interface GlobalActionsPanelPlugin extends Plugin {

  /** Invoked when the view is shown */
  PanelViewController onPanelShown(Callbacks callbacks, boolean deviceLocked);

  /** Callbacks for interacting with the view container */
  interface Callbacks {
    /** Dismisses the view */
    void dismissGlobalActionsMenu();

    /** Starts a PendingIntent, dismissing the keyguard if necessary. */
    void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent);
  }

  /** Provides the Quick Access Wallet view */
  interface PanelViewController {

    /** Returns the QuickAccessWallet view, which may take any size */
    View getPanelContent();

    /** Invoked when the view is dismissed */
    void onDismissed();

    /** Invoked when the device is either locked or unlocked. */
    void onDeviceLockStateChanged(boolean locked);
  }
}

Giao diện người dùng Ví truy cập nhanh triển khai GlobalActionsPanelPluginPanelViewController . GlobalActionsDialog lấy một phiên bản của plugin ví bằng cách sử dụng com.android.systemui.Dependency :

GlobalActionsPanelPlugin mPanelPlugin =
    Dependency.get(ExtensionController.class)
        .newExtension(GlobalActionsPanelPlugin.class)
        .withPlugin(GlobalActionsPanelPlugin.class)
        .build()
        .get();

Sau khi kiểm tra để chắc chắn rằng plugin không có giá trị rỗng và PanelViewController được onPanelShown trả về không có giá trị rỗng, hộp thoại sẽ đính kèm Chế View do getPanelContent cung cấp vào View của chính nó và cung cấp lệnh gọi lại thích hợp cho các sự kiện hệ thống.

// Construct a Wallet PanelViewController.
// `this` implements GlobalActionsPanelPlugin.Callbacks
GlobalActionsPanelPlugin.PanelViewController mPanelController =
    mPanelPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());

// Attach the view
FrameLayout panelContainer = findViewById(R.id.my_panel_container);
FrameLayout.LayoutParams panelParams =
    new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.MATCH_PARENT,
        FrameLayout.LayoutParams.MATCH_PARENT);
panelContainer.addView(mPanelController.getPanelContent(), panelParams);

// Respond to unlock events (if the view can be accessed while the phone is locked)
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
  @Override
  public void onUnlockedChanged() {
    boolean unlocked = keyguardStateController.isUnlocked()
        || keyguardStateController.canDismissLockScreen();
    mPanelController.onDeviceLockStateChanged(unlocked);
  }
});

// Implement GlobalActionsPanelPlugin.Callbacks
@Override
public void dismissGlobalActionsMenu() {
  dismissDialog();
}
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
  mActivityStarter.startPendingIntentDismissingKeyguard(pendingIntent);
}

// Notify the wallet when the container view is dismissed
mPanelController.onDismissed();

Để xóa Ví truy cập nhanh khỏi menu nguồn, hãy bỏ qua mục tiêu QuickAccessWallet khỏi bản dựng hệ thống. Để xóa Ví truy cập nhanh khỏi menu nguồn nhưng thêm nó vào chế độ xem Giao diện người dùng hệ thống khác được cung cấp, hãy bao gồm mục tiêu xây dựng và xóa các tham chiếu đến GlobalActionsPanelPlugin khỏi GlobalActionsImpl .

Đặt cấu hình mặc định

Android 12

Trong Android 12 trở lên, Ví truy cập nhanh luôn hiển thị trong phần cài đặt nhanh. Khả năng hiển thị của Ví truy cập nhanh trong màn hình khóa được kiểm soát bằng cài đặt bảo mật sau: LOCKSCREEN_SHOW_WALLET . Cài đặt này kiểm soát xem biểu tượng Ví truy cập nhanh có hiển thị ở phía dưới bên phải màn hình khóa hay không. Cài đặt này được đặt thành true theo mặc định nhưng người dùng có thể tắt trong Cài đặt > Hiển thị > Màn hình khóa > Hiển thị ví .

Android 11

Trong Android 11, khả năng hiển thị của Ví truy cập nhanh được kiểm soát bởi hai cài đặt bảo mật: GLOBAL_ACTIONS_PANEL_ENABLEDGLOBAL_ACTIONS_PANEL_AVAILABLE . Cài đặt AVAILABLE kiểm soát xem có thể bật và tắt tính năng này trong Cài đặt hay không. Cài đặt này được WalletPluginService đặt thành true . Nếu QuickAccessWallet không được đưa vào bản dựng thì cài đặt vẫn là false . Cài đặt ENABLED được đặt thành true theo mặc định ở cùng một vị trí nhưng người dùng có thể tắt trong Cài đặt. Để thay đổi hành vi mặc định, hãy sửa đổi WalletPluginService#enableFeatureInSettings .

Thẩm định

Để xác thực việc triển khai Ví truy cập nhanh của bạn, hãy chạy CTS và kiểm tra thủ công. Các thay đổi đối với plugin cũng sẽ thực hiện các bài kiểm tra điện tự động đi kèm.

xét nghiệm CTS

Chạy thử nghiệm CTS tại cts/tests/quickaccesswallet .

Kiểm tra thủ công cho Android 12

Việc kiểm tra các tính năng cốt lõi của Ví truy cập nhanh yêu cầu thiết bị đầu cuối thanh toán NFC (thật hoặc giả) và ứng dụng thanh toán NFC triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm tra bao gồm: tính khả dụng, trạng thái 0, lựa chọn thẻ và hoạt động của màn hình khóa.

khả dụng

  • Nếu ứng dụng thanh toán NFC mặc định không hỗ trợ tính năng này thì bạn sẽ không thể truy cập Ví truy cập nhanh trong cài đặt nhanh cũng như màn hình khóa.
  • Nếu ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này thì bạn có thể truy cập Ví truy cập nhanh trong phần cài đặt nhanh.
  • Nếu ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này và nếu cài đặt LOCKSCREEN_SHOW_WALLETtrue thì bạn có thể truy cập Ví truy cập nhanh trên màn hình khóa.
  • Nếu ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này và nếu cài đặt LOCKSCREEN_SHOW_WALLET false thì không thể truy cập Ví truy cập nhanh trên màn hình khóa.

Trạng thái không

  • Nếu QuickAccessWalletService được bật và xuất nhưng không cung cấp bất kỳ thẻ nào, ô trong Bóng sẽ xuất hiện như trong ví dụ ở Hình 7. Nhấp vào ô sẽ mở ứng dụng thanh toán NFC mặc định.

    Ô ví dụ trong bóng râm hiển thị ứng dụng thanh toán NFC mặc định

    Hình 7. Ô mẫu trong bóng hiển thị ứng dụng thanh toán NFC mặc định.

  • Nhấp vào chế độ xem trạng thái trống như trong Hình 8 sẽ mở ứng dụng thanh toán NFC mặc định. Chế độ xem trạng thái trống này chỉ được hiển thị khi người dùng còn một thẻ trong ví, xóa thẻ khỏi trang chi tiết thẻ và sau đó quay lại chế độ xem ví.

  • Màn hình khóa hiển thị biểu tượng ví.

Chế độ xem trạng thái trống trong Ví truy cập nhanh

Hình 8. Chế độ xem trạng thái trống trong Giao diện người dùng Ví truy cập nhanh.

Trạng thái khác không

  • Nếu ứng dụng ví cung cấp một hoặc nhiều thẻ, ô trong bóng râm sẽ xuất hiện như trong Hình 9.

    Ô ví dụ trong bóng râm khi ứng dụng ví có một hoặc nhiều thẻ

    Hình 9. Ví dụ về ô trong bóng râm khi ứng dụng ví có một hoặc nhiều thẻ.

  • Nhấp vào ô sẽ hiển thị băng chuyền thẻ.

  • Màn hình khóa hiển thị nút mở Ví truy cập nhanh.

    Giao diện người dùng Ví truy cập nhanh với thẻ được hiển thị

    Hình 10. Giao diện người dùng Ví truy cập nhanh với thẻ được hiển thị.

  • Nếu thẻ được hiển thị đại diện cho một phương thức thanh toán NFC, việc giữ điện thoại vào thiết bị đầu cuối thanh toán NFC sẽ dẫn đến phương thức thanh toán đó được sử dụng và chế độ xem ví sẽ bị loại bỏ.

  • Nhấp vào thẻ được hiển thị sẽ mở ra hoạt động chi tiết cho thẻ đó.

  • Nếu QuickAccessWalletService cung cấp nhiều thẻ, người dùng có thể vuốt giữa các thẻ.

  • Menu tràn chứa một mục: mở cài đặt màn hình khóa để người dùng có thể thay đổi tùy chọn Hiển thị ví .

Kiểm tra trạng thái khóa

  • Nếu điện thoại bị khóa, ví sẽ hiển thị trên bóng cài đặt nhanh, với mô tả Thêm thẻ nếu không có thẻ tồn tại trong ứng dụng thanh toán mặc định hoặc mở khóa để sử dụng nếu thẻ tồn tại trong ứng dụng thanh toán mặc định.
  • Nếu điện thoại bị khóa, khả năng hiển thị ví trên màn hình khóa sẽ được kiểm soát bởi cài đặt Secure.LOCKSCREEN_SHOW_WALLET , được kiểm soát trong Cài đặt.
  • Nếu điện thoại bị khóa, LOCKSCREEN_SHOW_WALLETfalse và không có thẻ nào tồn tại trong ứng dụng thanh toán NFC mặc định thì ví sẽ không hiển thị trên màn hình khóa.
  • Nếu điện thoại bị khóa, LOCKSCREEN_SHOW_WALLETtrue và không có thẻ nào tồn tại trong ứng dụng thanh toán NFC mặc định thì ví sẽ không hiển thị trên màn hình khóa.
  • Nếu điện thoại bị khóa, LOCKSCREEN_SHOW_WALLETtrue và thẻ tồn tại trong ứng dụng thanh toán NFC mặc định thì ví sẽ hiển thị trên màn hình khóa.
  • Việc mở khóa điện thoại trong khi ví đang hiển thị trên màn hình khóa sẽ khiến các thẻ được yêu cầu truy vấn, điều này có thể dẫn đến nội dung thẻ khác nhau.

Kiểm tra khả năng tiếp cận

  • Người dùng Talkback có thể điều hướng chế độ xem ví bằng cách vuốt sang trái và phải cũng như nghe mô tả nội dung của thẻ.
  • Vuốt sang trái và phải khi bật Talkback sẽ chọn lần lượt từng thẻ. Người dùng Talkback có thể chọn và sử dụng phương thức thanh toán NFC tại thiết bị đầu cuối thanh toán NFC.

Kiểm tra thủ công cho Android 11

Việc kiểm tra các tính năng cốt lõi của Ví truy cập nhanh yêu cầu thiết bị đầu cuối thanh toán NFC (thật hoặc giả) và ứng dụng thanh toán NFC triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm tra bao gồm tính khả dụng, trạng thái 0, lựa chọn thẻ và hoạt động của màn hình khóa.

khả dụng

  • Nếu cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDtrue và ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này thì bạn có thể truy cập Ví truy cập nhanh.
  • Nếu cài đặt GLOBAL_ACTIONS_PANEL_ENABLED false và ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này thì bạn sẽ không thể truy cập Ví truy cập nhanh.
  • Nếu cài đặt GLOBAL_ACTIONS_PANEL_ENABLEDtrue và ứng dụng thanh toán NFC mặc định không hỗ trợ tính năng này thì bạn sẽ không thể truy cập vào Ví truy cập nhanh.
  • Nếu cài đặt GLOBAL_ACTIONS_PANEL_ENABLED false và ứng dụng thanh toán NFC mặc định không hỗ trợ tính năng này thì bạn sẽ không thể truy cập vào Ví truy cập nhanh.

Trạng thái không

  • Nếu QuickAccessWalletService được bật và xuất nhưng không cung cấp bất kỳ thẻ nào thì giao diện người dùng Ví truy cập nhanh sẽ hiển thị chế độ xem trạng thái trống.
  • Nhấp vào chế độ xem trạng thái trống sẽ mở ứng dụng ví.

    Chế độ xem trạng thái trống trong Giao diện người dùng Ví truy cập nhanh
    Hình 11. Chế độ xem trạng thái trống trong Giao diện người dùng Ví truy cập nhanh.

Trạng thái khác không

  • Nếu ứng dụng ví cung cấp một hoặc nhiều thẻ thì các thẻ đó sẽ được hiển thị trong Giao diện người dùng Ví truy cập nhanh.

    Giao diện người dùng Ví truy cập nhanh với thẻ được hiển thị
    Hình 12. Giao diện người dùng Ví truy cập nhanh với thẻ được hiển thị.
  • Nếu thẻ được hiển thị đại diện cho một phương thức thanh toán NFC, việc giữ điện thoại vào thiết bị đầu cuối thanh toán NFC sẽ dẫn đến phương thức thanh toán đó được sử dụng và chế độ xem ví sẽ bị loại bỏ.

  • Nhấp vào thẻ được hiển thị sẽ loại bỏ chế độ xem ví và mở hoạt động chi tiết cho thẻ đó.

  • Nếu QuickAccessWalletService cung cấp nhiều thẻ, người dùng có thể vuốt giữa các thẻ.

  • Menu mục bổ sung chứa hai mục: một mục mở ứng dụng ví và một mục mở màn hình Hiển thị thẻ & thẻ trong Cài đặt.

Kiểm tra trạng thái khóa

  • Nếu điện thoại bị khóa, khả năng hiển thị của ví sẽ được kiểm soát bởi cài đặt Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT , cài đặt này có thể được kiểm soát trong Cài đặt.
  • Nếu điện thoại bị khóa và POWER_MENU_LOCK_SHOW_CONTENT false thì ví sẽ không được hiển thị.
  • Nếu điện thoại bị khóa và POWER_MENU_LOCK_SHOW_CONTENTtrue thì ví sẽ được hiển thị.
  • Việc mở khóa điện thoại trong khi ví đang hiển thị trên màn hình khóa sẽ khiến các thẻ được truy vấn lại, điều này có thể dẫn đến nội dung thẻ khác.

Kiểm tra khả năng tiếp cận

  • Người dùng TalkBack có thể điều hướng chế độ xem ví bằng cách vuốt sang trái và phải cũng như nghe mô tả nội dung của thẻ.
  • Vuốt sang trái và phải khi bật TalkBack sẽ lần lượt chọn từng thẻ. Người dùng TalkBack có thể chọn và sử dụng phương thức thanh toán NFC tại thiết bị đầu cuối thanh toán NFC.