Portfel Szybki dostęp

Funkcja Portfel szybkiego dostępu, dostępna od Androida 11, umożliwia użytkownikowi dostęp do kart płatniczych i odpowiednich kart bezpośrednio z menu zasilania. Główne zastosowania to wybieranie odpowiedniej formy płatności przed dokonaniem transakcji na terminalu NFC oraz szybki dostęp do biletów lotniczych i innych kart wstępu na nadchodzące wydarzenia.

W Androidzie 12 lub nowszym funkcja Szybki dostęp do portfela jest dostępna w panelu, jak pokazano na ilustracjach 1 i 2.

Funkcja szybkiego dostępu do Portfela w obszarze powiadomień
Rysunek 1. funkcji Szybki dostęp do Portfela (urządzenie zablokowane);
Funkcja szybkiego dostępu do Portfela w obszarze powiadomień
Rysunek 2. funkcja szybkiego dostępu do Portfela (urządzenie odblokowane).

W Androidzie 11 funkcja jest dostępna w menu zasilania, jak pokazano na rysunku 3.

Funkcja szybkiego dostępu do Portfela w menu zasilania
Rysunek 3. funkcja szybkiego dostępu do Portfela w menu zasilania;

Wymagania

Aby korzystać z funkcji Szybki dostęp do Portfela, urządzenie musi mieć NFC. Ta funkcja jest powiązana z QuickAccessWalletService domyślnej aplikacji płatniczej NFC, co oznacza, że urządzenie musi też obsługiwać komunikację NFC i emulację karty opartą na hoście (HCE).

Omówienie funkcji

Szybki dostęp do Portfela składa się z 2 części: interfejsu Szybkiego dostępu do Portfela i dostawcy kart w Szybkim dostępie do Portfela.

W Androidzie 12 lub nowszym interfejs Portfela działa w interfejsie systemu i znajduje się w frameworks/base/packages/SystemUI/src/com/android/systemui/wallet. W Androidzie 11 interfejs Portfela, który znajduje się w platform/packages/apps/QuickAccessWallet, musi być zainstalowany i umieszczony na białej liście.

Dostawca karty Portfela szybkiego dostępu jest domyślną aplikacją do płatności NFC. Użytkownicy mogą mieć zainstalowanych kilka aplikacji do płatności NFC, ale tylko domyślna aplikacja do płatności NFC może wyświetlać karty w menu zasilania. Możesz określić, która aplikacja do płatności NFC ma być początkowo ustawiona jako domyślna, ale użytkownicy mogą wybrać inną aplikację w Ustawieniach. Jeśli zainstalowana jest tylko jedna aplikacja do płatności NFC, automatycznie staje się ona domyślną (patrz CardEmulationManager).

Implementacja

Aby udostępniać karty w interfejsie Portfela szybkiego dostępu, aplikacje do płatności NFC muszą implementować QuickAccessWalletService. Aplikacje do płatności muszą zawierać wpis w pliku manifestu reklamujący usługę.

Aby mieć pewność, że tylko interfejs systemu może powiązać się z QuickAccessWalletService, aplikacja do płatności NFC musi wymagać uprawnienia android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE. Wymaganie tego uprawnienia zapewnia, że tylko interfejs systemu może powiązać się z 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>

Dodatkowe informacje o portfelu znajdują się w połączonym pliku XML:

<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"/>

Następnie aplikacja do płatności musi wdrożyć 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
    }
}

Jeśli HostApduService zacznie obsługiwać transakcję z użyciem NFC i w konsekwencji rozpocznie działanie mające na celu wyświetlenie postępu i wyniku płatności, powinna również spróbować uzyskać odniesienie do powiązanego elementu QuickAccessWalletService i wywołać QuickAccessWalletService#sendEvent z typem zdarzenia TYPE_NFC_PAYMENT_STARTED. Spowoduje to zamknięcie interfejsu Portfela szybkiego dostępu, dzięki czemu użytkownik będzie miał niezakłócony widok aktywności związanej z płatnościami.

Dodatkową dokumentację dotyczącą wdrażania QuickAccessWalletService znajdziesz w QuickAccessWalletServiceTestQuickAccessWalletService teście CTS.

Włączanie interfejsu szybkiego dostępu do Portfela na Androidzie 11

Aby skonfigurować Szybki dostęp do portfela, tak aby był dostępny w menu zasilania na Androidzie 11, uwzględnij element QuickAccessWallet w kompilacji i włącz wtyczkę globalactions.wallet, dodając pogrubioną linię w poniższym przykładzie kodu do pliku 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>

Określ domyślną aplikację do płatności NFC w pliku konfiguracyjnym ustawień za pomocą def_nfc_payment_component.

Domyślna aplikacja płatnicza NFC musi udostępniać interfejs QuickAccessWalletService, aby przekazywać karty do Portfela szybkiego dostępu. Jeśli domyślna aplikacja do płatności NFC nie eksportuje tej usługi, interfejs Portfela jest ukryty.

Szczegóły implementacji QuickAccessWalletService

QuickAccessWalletService ma 3 metody abstrakcyjne, które muszą zostać zaimplementowane: onWalletCardsRequested, onWalletCardSelectedonWalletDismissed. Poniższy diagram sekwencji ilustruje sekwencję wywołań, gdy portfel szybkiego dostępu jest wyświetlany bezpośrednio przed płatnością NFC.

Schemat sekwencji szybkiego dostępu do Portfela

Przykładowa sekwencja wywołań podczas wyświetlania Portfela szybkiego dostępu
Rysunek 4. Przykładowa sekwencja wywołań podczas wyświetlania Portfela w ramach szybkiego dostępu.

Nie wszystkie wyświetlenia Portfela szybkiego dostępu są powiązane z płatnością NFC, ale rysunek 4 powyżej ilustruje wszystkie możliwości QuickAccessWalletService. W tym przykładzie dostawca karty Portfel szybkiego dostępu implementuje elementy zaznaczone na niebiesko. Zakłada się, że karty płatnicze są przechowywane na urządzeniu w bazie danych i dostęp do nich jest uzyskiwany za pomocą interfejsu o nazwie PaymentCardManager. Zakładamy też, że aktywność o nazwie PaymentActivity wyświetla wynik płatności NFC. Proces przebiega w ten sposób:

  1. Użytkownik wykonuje gest, aby otworzyć Portfel szybkiego dostępu.
  2. Interfejs portfela szybkiego dostępu (część interfejsu systemu) sprawdza menedżera pakietów, aby dowiedzieć się, czy domyślna aplikacja płatnicza NFC eksportuje QuickAccessWalletService.

    • Jeśli usługa nie zostanie wyeksportowana, Portfel szybkiego dostępu nie będzie wyświetlany.
  3. Interfejs szybkiego dostępu do Portfela jest powiązany z QuickAccessWalletService i wywołuje onWalletCardsRequested. Ta metoda przyjmuje obiekt żądania zawierający dane o liczbie i rozmiarze kart, które można udostępnić, oraz wywołanie zwrotne. Wywołanie zwrotne może być wywoływane z wątku w tle.

  4. QuickAccessWalletService oblicza karty, które chce wyświetlić, a następnie wywołuje metodę onSuccess w podanym wywołaniu zwrotnym. Zalecamy, aby usługa wykonywała te działania w wątku w tle.

  5. Gdy tylko karty zostaną wyświetlone, interfejs systemu powiadomi QuickAccessWalletService, że pierwsza karta została wybrana, wywołując onWalletCardSelected.

    • onWalletCardSelected jest wywoływana za każdym razem, gdy użytkownik wybierze nową kartę.
    • Funkcja onWalletCardSelected może zostać wywołana nawet wtedy, gdy aktualnie wybrana karta nie uległa zmianie.
  6. Gdy użytkownik zamknie Portfel w sekcji Szybki dostęp, interfejs systemu powiadomi o tym aplikację QuickAccessWalletService, wywołując funkcję onWalletDismissed.

W powyższym przykładzie użytkownik zbliża telefon do terminala płatniczego NFC, gdy wyświetlany jest portfel. Kluczowym elementem obsługi płatności NFC jest HostApduService, który musi być zaimplementowany w celu przetwarzania jednostek APDU dostarczanych przez czytnik NFC (więcej informacji znajdziesz w artykule Emulacja karty na hoście). Zakłada się, że aplikacja do płatności uruchamia działanie, aby wyświetlić postęp i wynik interakcji z terminalem NFC. Interfejs Portfela szybkiego dostępu jest jednak wyświetlany na wierzchu okna aplikacji, co oznacza, że aktywność związana z płatnościami jest zasłonięta przez interfejs Portfela szybkiego dostępu. Aby to naprawić, aplikacja musi powiadomić interfejs systemu, że interfejs Portfela w Szybkim dostępie powinien zostać zamknięty. Może to zrobić, uzyskując odniesienie do powiązanego QuickAccessWalletService i wywołując sendWalletServiceEvent z rodzajem zdarzenia TYPE_NFC_PAYMENT_STARTED.

Przykładowa implementacja 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();
    });
  }
}

Więcej informacji o QuickAccessWalletService znajdziesz w QuickAccessWalletServicedokumentacji API.

Uprawnienia

Wpis w pliku manifestu dla QuickAccessWalletService musi wymagać uprawnienia android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE wprowadzonego w Androidzie 11. Jest to uprawnienie na poziomie podpisu, które ma interfejs systemu. Oznacza to, że tylko proces interfejsu systemu może wiązać się z implementacjami QuickAccessWalletService. Pamiętaj, że aplikacje wczytane z zewnątrz mogą żądać tego uprawnienia i uzyskać pełny dostęp do danych QuickAccessWalletService na urządzeniach z Androidem 10 lub starszym. Aby temu zapobiec, zalecamy, aby usługa sprawdzała wersję kompilacji w onCreate i włączała się tylko na urządzeniach z Androidem 11 lub nowszym. Nie są wymagane żadne inne uprawnienia aplikacji poza tymi, które są niezbędne do świadczenia usług płatności opartych na host card emulation.

Jeśli domyślna aplikacja do płatności NFC nie implementuje ani nie eksportujeQuickAccessWalletService, interfejs Portfela szybkiego dostępu nie jest wyświetlany.

Ustawienia w Androidzie 12

Aby włączyć lub wyłączyć szybki dostęp do portfela na ekranie blokady, użytkownicy mogą użyć przełącznika Pokaż portfelUstawieniach > Wyświetlacz > Ekran blokady. Aby wyłączyć portfel w panelu, użytkownicy muszą ręcznie go edytować w panelu szybkich ustawień.

Przełącz, aby włączyć lub wyłączyć portfel na ekranie blokady

Rysunek 5. Przełącznik Portfel na stronie Ekran blokady w Ustawieniach.

Ustawienia w Androidzie 11

Użytkownicy mogą wyłączyć funkcję Szybkiego dostępu do portfela w aplikacji Ustawienia. Strona ustawień znajduje się w sekcji Ustawienia > System > Gesty > Karty i dokumenty.

Strona ustawień, na której możesz włączyć lub wyłączyć funkcję szybkiego dostępu do Portfela
Rysunek 6. stronę ustawień, na której możesz włączyć lub wyłączyć funkcję szybkiego dostępu do Portfela.

Dostosowywanie

Dodawanie widoku Szybkiego dostępu do Portfela w innym miejscu interfejsu systemu

Interfejs Portfela szybkiego dostępu jest wbudowany jako wtyczka systemowa. Chociaż implementacja AOSP korzysta z tej funkcji w przypadku GlobalActionsDialog (wyświetlanego po długim naciśnięciu przycisku zasilania), możesz przenieść ją do innego gestu, o ile zachowasz umowę określoną przez interfejs wtyczki.

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);
  }
}

Interfejs szybkiego dostępu do Portfela implementuje GlobalActionsPanelPluginPanelViewController. GlobalActionsDialog pobiera instancję wtyczki Portfela za pomocą com.android.systemui.Dependency:

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

Po sprawdzeniu, czy wtyczka nie ma wartości null i czy wartość PanelViewControllerzwrócona przez onPanelShown nie ma wartości null, okno dialogowe dołącza wartość View podaną przez getPanelContent do własnej wartości View i zapewnia odpowiednie wywołania zwrotne dla zdarzeń systemowych.

// 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();

Aby usunąć Portfel szybkiego dostępu z menu zasilania, pomiń element docelowy QuickAccessWallet w kompilacji systemu. Aby usunąć Szybki dostęp do Portfela z menu zasilania, ale dodać go do innego widoku interfejsu systemu, uwzględnij cel kompilacji i usuń odwołania do GlobalActionsPanelPluginGlobalActionsImpl.

Ustawianie konfiguracji domyślnych

Android 12

W Androidzie 12 lub nowszym Portfel Szybkiego dostępu jest zawsze widoczny w Szybkich ustawieniach. Widoczność Szybkiego dostępu do portfela na ekranie blokady jest ograniczona przez to ustawienie zabezpieczeń:LOCKSCREEN_SHOW_WALLET To ustawienie określa, czy ikona Szybkiego dostępu do portfela ma być wyświetlana w prawym dolnym rogu ekranu blokady. To ustawienie jest domyślnie ustawione na true, ale użytkownik może je wyłączyć, wybierając Ustawienia > Wyświetlacz > Ekran blokady > Pokaż portfel.

Android 11

W Androidzie 11 widoczność Portfela szybkiego dostępu jest ograniczona przez 2 ustawienia zabezpieczeń: GLOBAL_ACTIONS_PANEL_ENABLEDGLOBAL_ACTIONS_PANEL_AVAILABLE. Ustawienie AVAILABLE określa, czy funkcję można włączać i wyłączać w Ustawieniach. To ustawienie jest ustawione na true przez WalletPluginService. Jeśli QuickAccessWallet nie jest uwzględniony w kompilacji, ustawienie pozostaje false. Ustawienie ENABLED jest domyślnie ustawione na true w tym samym miejscu, ale użytkownik może je wyłączyć w Ustawieniach. Aby zmienić domyślne działanie, zmodyfikuj WalletPluginService#enableFeatureInSettings.

Walidacja

Aby sprawdzić wdrożenie Portfela szybkiego dostępu, uruchom testy CTS i testy ręczne. Zmiany w pluginie powinny też obejmować testy Robolectric.

Testy CTS

Uruchom testy CTS znajdujące się w lokalizacji cts/tests/quickaccesswallet.

Testy ręczne na Androidzie 12

Testowanie podstawowych funkcji Portfela szybkiego dostępu wymaga terminala płatniczego NFC (prawdziwego lub fałszywego) i aplikacji do płatności NFC, która implementuje QuickAccessWalletService (aplikacja portfela). Podstawowe funkcje, które należy przetestować, to: dostępność, stan zerowy, wybór karty i działanie ekranu blokady.

Dostępność

  • Jeśli domyślna aplikacja do płatności NFC nie obsługuje tej funkcji, Portfel szybkiego dostępu nie będzie dostępny ani w szybkich ustawieniach, ani na ekranie blokady.
  • Jeśli domyślna aplikacja do płatności NFC obsługuje tę funkcję, Portfel szybkiego dostępu jest dostępny w panelu Szybkich ustawień.
  • Jeśli domyślna aplikacja do płatności NFC obsługuje tę funkcję, a ustawienie LOCKSCREEN_SHOW_WALLET ma wartość true, Portfel szybkiego dostępu jest dostępny na ekranie blokady.
  • Jeśli domyślna aplikacja do płatności NFC obsługuje tę funkcję i ustawienie LOCKSCREEN_SHOW_WALLET jest false, Portfel szybkiego dostępu nie jest dostępny na ekranie blokady.

Stan zero

  • Jeśli zasada QuickAccessWalletService jest włączona i wyeksportowana, ale nie udostępnia żadnych kart, kafelek w cieniu wygląda jak w przykładzie na ilustracji 7. Kliknięcie kafelka otwiera domyślną aplikację do płatności NFC.

    Przykładowy kafelek w obszarze powiadomień z domyślną aplikacją do płatności NFC

    Rysunek 7. Przykładowy kafelek w obszarze powiadomień pokazujący domyślną aplikację do płatności NFC.

  • Kliknięcie pustego widoku stanu, jak pokazano na ilustracji 8, otwiera domyślną aplikację do płatności NFC. Ten pusty widok stanu jest wyświetlany tylko wtedy, gdy użytkownik ma w portfelu 1 kartę, usunie ją ze strony szczegółów karty, a następnie wróci do widoku portfela.

  • Na ekranie blokady widać ikonę portfela.

Widok stanu pustego w Portfelu w szybkim dostępie

Rysunek 8. Widok pustego stanu w interfejsie szybkiego dostępu do Portfela.

Stan inny niż zero

  • Jeśli aplikacja portfela udostępnia co najmniej 1 kartę, kafelek w panelu powiadomień wygląda tak jak na ilustracji 9.

    Przykładowy kafelek w cieniu, gdy aplikacja portfela zawiera co najmniej 1 kartę

    Rysunek 9. Przykładowy kafelek w cieniu, gdy aplikacja portfela zawiera co najmniej 1 kartę.

  • Kliknięcie kafelka powoduje wyświetlenie karuzeli kart.

  • Na ekranie blokady wyświetla się przycisk, który otwiera Portfel z szybkim dostępem.

    Interfejs Portfela szybkiego dostępu z wyświetloną kartą

    Rysunek 10. Interfejs Portfela z szybkim dostępem z wyświetloną kartą.

  • Jeśli wyświetlona karta reprezentuje formę płatności NFC, przyłożenie telefonu do terminala płatniczego NFC spowoduje użycie tej formy płatności i zamknięcie widoku portfela.

  • Kliknięcie wyświetlonej karty otwiera szczegółowe informacje o aktywności na tej karcie.

  • Jeśli QuickAccessWalletService udostępnia wiele kart, użytkownik może je przewijać.

  • Rozszerzone menu zawiera 1 element: otwórz ustawienia ekranu blokady, aby użytkownik mógł zmienić opcję Pokaż portfel.

Testy stanu zamka

  • Jeśli telefon jest zablokowany, portfel jest widoczny w panelu szybkich ustawień z opisem Dodaj kartę, jeśli w domyślnej aplikacji płatniczej nie ma żadnej karty, lub Odblokuj, aby użyć, jeśli w domyślnej aplikacji płatniczej są karty.
  • Jeśli telefon jest zablokowany, widoczność portfela na ekranie blokady jest kontrolowana przez ustawienie Secure.LOCKSCREEN_SHOW_WALLET, które można zmienić w Ustawieniach.
  • Jeśli telefon jest zablokowany, wartość LOCKSCREEN_SHOW_WALLET to false, a w domyślnej aplikacji do płatności NFC nie ma karty, portfel nie jest wyświetlany na ekranie blokady.
  • Jeśli telefon jest zablokowany, wartość LOCKSCREEN_SHOW_WALLET to true, a w domyślnej aplikacji do płatności NFC nie ma karty, portfel nie jest wyświetlany na ekranie blokady.
  • Jeśli telefon jest zablokowany, LOCKSCREEN_SHOW_WALLET ma wartość true, a w domyślnej aplikacji do płatności NFC są karty, portfel wyświetla się na ekranie blokady.
  • Odblokowanie telefonu, gdy portfel jest wyświetlany na ekranie blokady, powoduje ponowne wysłanie żądania dotyczącego kart, co może skutkować wyświetleniem innej zawartości karty.

Testy ułatwień dostępu

  • Użytkownicy Talkbacka mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchając opisów treści na kartach.
  • Przesuwanie w lewo i w prawo przy włączonej usłudze TalkBack powoduje wybieranie kolejnych kart. Użytkownicy Talkbacka mogą wybrać i użyć formy płatności NFC na terminalu płatniczym NFC.

Testy ręczne na Androida 11

Testowanie podstawowych funkcji Portfela szybkiego dostępu wymaga terminala płatniczego NFC (prawdziwego lub fałszywego) i aplikacji do płatności NFC, która implementuje QuickAccessWalletService (aplikacja portfela). Podstawowe funkcje, które należy przetestować, to dostępność, stan zerowy, wybór karty i działanie ekranu blokady.

Dostępność

  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED jest true, a domyślna aplikacja do płatności NFC obsługuje tę funkcję, Portfel Szybkiego Dostępu jest dostępny.
  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false, a domyślna aplikacja do płatności NFC obsługuje tę funkcję, Portfel szybkiego dostępu nie jest dostępny.
  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość true, a domyślna aplikacja do płatności NFC nie obsługuje tej funkcji, Szybki dostęp do portfela nie jest dostępny.
  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false, a domyślna aplikacja do płatności NFC nie obsługuje tej funkcji, Szybki dostęp do portfela nie jest dostępny.

Stan zero

  • Jeśli zasada QuickAccessWalletService jest włączona i eksportowana, ale nie udostępnia żadnych kart, interfejs szybkiego dostępu do Portfela wyświetla widok pustego stanu.
  • Kliknięcie widoku pustego stanu otwiera aplikację Portfel.

    Widok pustego stanu w interfejsie szybkiego dostępu do Portfela
    Rysunek 11. Widok pustego stanu w interfejsie szybkiego dostępu do Portfela.

Stan inny niż zero

  • Jeśli aplikacja portfela udostępnia co najmniej jedną kartę, karty są wyświetlane w interfejsie portfela szybkiego dostępu.

    Interfejs Portfela szybkiego dostępu z wyświetloną kartą
    Rysunek 12. Interfejs Portfela z szybkim dostępem i wyświetloną kartą.
  • Jeśli wyświetlona karta reprezentuje formę płatności NFC, przyłożenie telefonu do terminala płatniczego NFC spowoduje użycie tej formy płatności i zamknięcie widoku portfela.

  • Kliknięcie wyświetlonej karty powoduje zamknięcie widoku portfela i otwarcie szczegółowych informacji o aktywności na tej karcie.

  • Jeśli QuickAccessWalletService udostępnia wiele kart, użytkownik może je przewijać.

  • Menu przepełnienia zawiera 2 elementy: jeden otwiera aplikację Portfel, a drugi otwiera ekran Pokaż karty w Ustawieniach.

Testy stanu zamka

  • Jeśli telefon jest zablokowany, widoczność portfela jest kontrolowana przez ustawienie Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT, którym można zarządzać w Ustawieniach.
  • Jeśli telefon jest zablokowany, a zasada POWER_MENU_LOCK_SHOW_CONTENT ma wartość false, portfel nie jest wyświetlany.
  • Jeśli telefon jest zablokowany, a POWER_MENU_LOCK_SHOW_CONTENT jest true, wyświetli się portfel.
  • Odblokowanie telefonu, gdy portfel jest wyświetlany na ekranie blokady, powoduje ponowne wysłanie zapytania o karty, co może skutkować wyświetleniem innej zawartości karty.

Testy ułatwień dostępu

  • Użytkownicy TalkBacka mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchając opisów treści na kartach.
  • Przesuwanie w lewo i w prawo przy włączonej funkcji TalkBack powoduje wybieranie kolejnych kart. Użytkownicy TalkBack mogą wybierać i używać formy płatności NFC na terminalu płatniczym NFC.