Portfel szybkiego dostępu

Funkcja szybkiego dostępu do portfela dostępna od Androida 11 umożliwia użytkownikowi dostęp do kart płatniczych i odpowiednich przepustek bezpośrednio z menu zasilania. Główne zastosowania obejmują wybór odpowiedniej metody płatności przed wykonaniem transakcji na terminalu NFC oraz szybki dostęp do lotów i innych karnetów na nadchodzące wydarzenia.

W systemie Android 12 lub nowszym funkcja portfela szybkiego dostępu jest dostępna w cieniu, jak pokazano na rysunku 1 i rysunku 2.

Portfel szybkiego dostępu w cieniu
Rysunek 1. Funkcja portfela szybkiego dostępu (urządzenie zablokowane).
Portfel szybkiego dostępu w cieniu
Rysunek 2. Funkcja portfela szybkiego dostępu (urządzenie odblokowane).

W systemie Android 11 funkcja jest dostępna z 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 móc korzystać z funkcji Portfel szybkiego dostępu, Twoje urządzenie musi obsługiwać technologię NFC. Ta funkcja jest powiązana z QuickAccessWalletService domyślnej aplikacji płatniczej NFC, co oznacza, że ​​urządzenie musi także obsługiwać emulację karty opartej na hoście NFC (HCE) .

Przegląd funkcji

Portfel szybkiego dostępu składa się z dwóch części: interfejsu użytkownika portfela szybkiego dostępu i dostawcy karty portfela szybkiego dostępu.

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

Dostawca karty Quick Access Wallet jest domyślną aplikacją płatniczą NFC. Użytkownicy mogą mieć jednocześnie zainstalowanych wiele 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 płatnicza NFC, automatycznie staje się ona domyślną (patrz CardEmulationManager ).

Realizacja

Aby udostępniać karty w interfejsie portfela szybkiego dostępu, aplikacje płatnicze NFC muszą implementować QuickAccessWalletService . Aplikacje płatnicze muszą zawierać wpis manifestu reklamujący usługę.

Aby mieć pewność, że tylko interfejs użytkownika systemu może powiązać się z QuickAccessWalletService , aplikacja płatnicza NFC musi wymagać uprawnienia android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE . Wymaganie tego uprawnienia gwarantuje, że tylko interfejs użytkownika systemu będzie mógł 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 płatnicza musi implementować 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ę NFC i w konsekwencji rozpocznie czynność mającą na celu wyświetlenie postępu i wyniku płatności, powinien także spróbować uzyskać referencję do powiązanej QuickAccessWalletService i wywołać QuickAccessWalletService#sendEvent z typem zdarzenia TYPE_NFC_PAYMENT_STARTED . Powoduje to zamknięcie interfejsu użytkownika Portfela szybkiego dostępu, umożliwiając użytkownikowi niezakłócony wgląd w aktywność płatniczą.

Dodatkową dokumentację dotyczącą wdrażania QuickAccessWalletService można znaleźć w QuickAccessWalletService i teście CTS TestQuickAccessWalletService .

Włączanie interfejsu portfela szybkiego dostępu w systemie Android 11

Aby skonfigurować Portfel szybkiego dostępu, aby był dostępny z menu zasilania systemu Android 11, dołącz element docelowy QuickAccessWallet do kompilacji i włącz wtyczkę globalactions.wallet , dodając pogrubioną linię w poniższym przykładzie kodu do 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ę płatniczą NFC w pliku konfiguracyjnym ustawień , używając def_nfc_payment_component .

Domyślna aplikacja płatnicza NFC musi udostępniać QuickAccessWalletService , aby móc dostarczać 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 usługi QuickAccessWalletService

QuickAccessWalletService ma trzy abstrakcyjne metody, które należy zaimplementować: onWalletCardsRequested , onWalletCardSelected i onWalletDismissed . Poniższy diagram sekwencji ilustruje sekwencję połączeń podczas przeglądania Portfela szybkiego dostępu bezpośrednio poprzedzającego płatność NFC.

Schemat sekwencji portfela szybkiego dostępu

Przykładowa sekwencja połączeń podczas przeglądania Portfela szybkiego dostępu
Rysunek 4. Przykładowa sekwencja połączeń podczas przeglądania Portfela szybkiego dostępu.

Nie po wszystkich odsłonach Portfela szybkiego dostępu następuje płatność NFC, ale rysunek 4 powyżej ilustruje wszystkie możliwości usługi QuickAccessWalletService . W tym przykładzie dostawca karty Portfel szybkiego dostępu implementuje elementy zaznaczone na niebiesko. Zakłada się, że karty płatnicze przechowywane są na urządzeniu w bazie danych, a dostęp do nich odbywa się poprzez interfejs o nazwie PaymentCardManager . Zakłada się ponadto, że działanie o nazwie PaymentActivity wyświetla wynik płatności NFC. Przepływ przebiega w następujący sposób:

  1. Użytkownik wykonuje gest, aby wyświetlić portfel szybkiego dostępu.
  2. Interfejs portfela szybkiego dostępu (część interfejsu użytkownika systemu) sprawdza menedżera pakietów, czy domyślna aplikacja do płatności NFC eksportuje QuickAccessWalletService .

    • Jeśli usługa nie zostanie wyeksportowana, portfel szybkiego dostępu nie będzie wyświetlany.
  3. Interfejs użytkownika portfela szybkiego dostępu łączy się z QuickAccessWalletService i wywołuje onWalletCardsRequested . Ta metoda pobiera obiekt żądania zawierający dane o liczbie i rozmiarze kart, które można podać oraz wywołanie zwrotne. Wywołanie zwrotne można wywołać z wątku w tle.

  4. QuickAccessWalletService oblicza karty, które chce pokazać, a następnie wywołuje metodę onSuccess w ramach podanego wywołania zwrotnego. Zaleca się, aby usługa wykonywała te akcje w wątku w tle.

  5. Gdy tylko karty zostaną wyświetlone, interfejs systemowy powiadamia QuickAccessWalletService o wybraniu pierwszej karty, wywołując metodę onWalletCardSelected .

    • onWalletCardSelected jest wywoływany za każdym razem, gdy użytkownik wybiera nową kartę.
    • onWalletCardSelected można wywołać, nawet jeśli aktualnie wybrana karta nie uległa zmianie.
  6. Gdy użytkownik odrzuci portfel szybkiego dostępu, interfejs systemowy powiadamia QuickAccessWalletService , wywołując metodę onWalletDismissed .

W powyższym przykładzie użytkownik zbliża telefon w zasięg terminala płatniczego NFC w czasie wyświetlania portfela. Kluczowym elementem obsługi płatności NFC jest HostApduService , który należy zaimplementować, aby przetwarzać APDU dostarczane przez czytnik NFC (więcej informacji znajdziesz w dziale Emulacja karty w oparciu o hosta ). Zakłada się, że aplikacja płatnicza rozpoczyna czynność mającą na celu wyświetlenie postępu i wyniku interakcji z terminalem NFC. Jednakże interfejs portfela szybkiego dostępu jest wyświetlany na górze okna aplikacji, co oznacza, że ​​aktywność płatnicza jest zasłonięta przez interfejs portfela szybkiego dostępu. Aby temu zaradzić, aplikacja musi powiadomić interfejs użytkownika systemu, że interfejs użytkownika portfela szybkiego dostępu powinien zostać zamknięty. Może to zrobić, pobierając odwołanie do powiązanej QuickAccessWalletService i wywołując sendWalletServiceEvent z typem 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 szczegółów na temat QuickAccessWalletService można znaleźć w dokumencie Informacje o interfejsie API QuickAccessWalletService .

Uprawnienia

Wpis manifestu dla QuickAccessWalletService musi wymagać uprawnienia android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE wprowadzonego w systemie Android 11. Jest to uprawnienie na poziomie podpisu posiadane przez interfejs użytkownika systemu, co oznacza, że ​​tylko proces interfejsu użytkownika systemu może powiązać się z implementacjami usługi QuickAccessWalletService . Pamiętaj, że aplikacje ładowane z boku mogą ubiegać się o to uprawnienie i uzyskać pełny dostęp do danych QuickAccessWalletService na urządzeniach z systemem Android 10 lub starszym. Aby temu zapobiec, zaleca się, aby usługa sprawdziła wersję kompilacji w onCreate i włączyła usługę tylko na urządzeniach z systemem Android 11 i nowszym. Żadne inne uprawnienia aplikacji nie są wymagane poza tymi niezbędnymi do świadczenia usług płatniczych emulujących kartę hosta.

Jeśli domyślna aplikacja do płatności NFC nie implementuje ani nie eksportuje QuickAccessWalletService , interfejs użytkownika portfela szybkiego dostępu nie jest wyświetlany.

Ustawienia w Androidzie 12

Aby włączyć lub wyłączyć Portfel szybkiego dostępu na ekranie blokady, użytkownicy mogą skorzystać z przełącznika Pokaż portfel w obszarze Ustawienia > Wyświetlacz > Ekran blokady . Aby wyłączyć portfel w cieniu, użytkownicy muszą go ręcznie edytować w cieniu szybkich ustawień.

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

Rysunek 5. Przełącznik Pokaż portfel na stronie Ekran blokady w Ustawieniach.

Ustawienia w Androidzie 11

Użytkownicy mogą wyłączyć funkcję Portfel szybkiego dostępu w aplikacji Ustawienia. Stronę ustawień znajdziesz w Ustawieniach > System > Gesty > Karty i karnety .

Strona ustawień, na której można włączyć lub wyłączyć funkcję portfela szybkiego dostępu
Rysunek 6. Strona ustawień umożliwiająca włączenie lub wyłączenie funkcji Portfel szybkiego dostępu.

Dostosowywanie

Dodanie widoku portfela szybkiego dostępu do innej lokalizacji w interfejsie użytkownika systemu

Interfejs portfela szybkiego dostępu jest zbudowany jako wtyczka systemowa . Chociaż implementacja AOSP wykorzystuje tę funkcję w GlobalActionsDialog (pokazaną po długim naciśnięciu przycisku zasilania), możesz przenieść tę funkcję za pomocą 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 użytkownika portfela szybkiego dostępu implementuje GlobalActionsPanelPlugin i PanelViewController . 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 PanelViewController zwrócony przez onPanelShown nie ma wartości null, okno dialogowe dołącza View dostarczony przez getPanelContent do własnego 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ąć portfel szybkiego dostępu z menu zasilania, ale dodać go do innego widoku dostępnego w interfejsie użytkownika systemu, uwzględnij element docelowy kompilacji i usuń odniesienia do wtyczki GlobalActionsPanelPlugin z GlobalActionsImpl .

Ustawianie konfiguracji domyślnych

Androida 12

W systemie Android 12 lub nowszym Portfel szybkiego dostępu jest zawsze widoczny w obszarze szybkich ustawień. Widoczność portfela szybkiego dostępu na ekranie blokady jest ograniczona przez następujące bezpieczne ustawienie: LOCKSCREEN_SHOW_WALLET . To ustawienie określa, czy ikona portfela szybkiego dostępu będzie wyświetlana w prawym dolnym rogu ekranu blokady. To ustawienie jest domyślnie ustawione na true , ale użytkownik może je wyłączyć w Ustawieniach > Wyświetlacz > Ekran blokady > Pokaż portfel .

Androida 11

W systemie Android 11 widoczność Portfela szybkiego dostępu jest ograniczona przez dwa bezpieczne ustawienia: GLOBAL_ACTIONS_PANEL_ENABLED i GLOBAL_ACTIONS_PANEL_AVAILABLE . Ustawienie AVAILABLE określa, czy tę funkcję można włączać i wyłączać w Ustawieniach. To ustawienie jest ustawiane na true przez WalletPluginService . Jeśli w kompilacji nie uwzględniono QuickAccessWallet , ustawienie pozostanie 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 zachowanie, zmodyfikuj WalletPluginService#enableFeatureInSettings .

Walidacja

Aby zweryfikować wdrożenie Portfela szybkiego dostępu, przeprowadź testy CTS i testy ręczne. Zmiany we wtyczce warto także przetestować za pomocą dołączonych testów robotyczno-elektrycznych .

Testy CTS

Uruchom testy CTS znajdujące się pod adresem cts/tests/quickaccesswallet .

Testy ręczne dla Androida 12

Do testowania podstawowych funkcji portfela szybkiego dostępu wymagany jest terminal płatniczy NFC (prawdziwy lub fałszywy) oraz aplikacja płatnicza NFC obsługująca usługę QuickAccessWalletService (aplikacja portfela). Podstawowe funkcje, które należy przetestować, obejmują: dostępność, stan zerowy, wybór karty i zachowanie 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 obszarze szybkich ustawień.
  • Jeśli domyślna aplikacja do płatności NFC obsługuje tę funkcję i jeśli ustawienie LOCKSCREEN_SHOW_WALLET ma wartość true , portfel szybkiego dostępu będzie dostępny na ekranie blokady.
  • Jeśli domyślna aplikacja do płatności NFC obsługuje tę funkcję i jeśli ustawienie LOCKSCREEN_SHOW_WALLET ma wartość false , portfel szybkiego dostępu nie będzie dostępny na ekranie blokady.

Stan zerowy

  • Jeśli QuickAccessWalletService jest włączona i wyeksportowana, ale nie udostępnia żadnych kart, kafelek w cieniu pojawi się, jak pokazano w przykładzie na rysunku 7. Kliknięcie kafelka otwiera domyślną aplikację płatniczą NFC.

    Przykładowy kafelek w cieniu przedstawiający domyślną aplikację płatniczą NFC

    Rysunek 7. Przykładowy kafelek w cieniu przedstawiający domyślną aplikację płatniczą NFC.

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

  • Na ekranie blokady wyświetlana jest ikona portfela.

Pusty widok stanu w Portfelu szybkiego dostępu

Rysunek 8. Widok stanu pustego w interfejsie użytkownika Portfela szybkiego dostępu.

Stan niezerowy

  • Jeśli aplikacja portfela udostępnia jedną lub więcej kart, kafelek w cieniu pojawi się, jak pokazano na rysunku 9.

    Przykładowy kafelek w cieniu, gdy aplikacja portfela ma jedną lub więcej kart

    Rysunek 9. Przykładowy kafelek w cieniu, gdy aplikacja portfela ma jedną lub więcej kart.

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

  • Na ekranie blokady widoczny jest przycisk otwierający Portfel szybkiego dostępu.

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

    Rysunek 10. Interfejs portfela szybkiego dostępu z wyświetloną kartą.

  • Jeśli wyświetlona karta reprezentuje metodę płatności NFC, przyłożenie telefonu do terminala płatniczego NFC powoduje użycie tej metody płatności i odrzucenie widoku portfela.

  • Kliknięcie na wyświetloną kartę powoduje otwarcie szczegółowej aktywności dla tej karty.

  • Jeśli usługa QuickAccessWalletService udostępnia wiele kart, użytkownik może przełączać się między kartami.

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

Testy stanu blokady

  • Jeśli telefon jest zablokowany, portfel będzie widoczny w obszarze szybkich ustawień z opisem Dodaj kartę , jeśli w domyślnej aplikacji płatniczej nie ma karty lub Odblokuj, aby móc korzystać , jeśli w domyślnej aplikacji płatniczej istnieją karty.
  • Jeśli telefon jest zablokowany, widoczność portfela na ekranie blokady jest kontrolowana przez ustawienie Secure.LOCKSCREEN_SHOW_WALLET , które można ustawić w Ustawieniach.
  • Jeśli telefon jest zablokowany, LOCKSCREEN_SHOW_WALLET ma false , a w domyślnej aplikacji płatniczej NFC nie ma żadnej 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 płatniczej NFC nie ma żadnej karty, portfel nie będzie wyświetlany na ekranie blokady.
  • Jeśli telefon jest zablokowany, LOCKSCREEN_SHOW_WALLET ma true , a w domyślnej aplikacji płatniczej NFC znajdują się karty, portfel zostanie wyświetlony na ekranie blokady.
  • Odblokowanie telefonu podczas wyświetlania portfela na ekranie blokady powoduje ponowne zapytanie o karty, co może skutkować inną zawartością karty.

Testy dostępności

  • Użytkownicy Talkback mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchając opisów zawartości kart.
  • Przesuwanie w lewo i w prawo przy włączonej funkcji Talkback powoduje po kolei wybieranie każdej karty. Użytkownicy Talkback mogą wybrać i skorzystać z metody płatności NFC na terminalu płatniczym NFC.

Testy ręczne dla Androida 11

Do testowania podstawowych funkcji portfela szybkiego dostępu wymagany jest terminal płatniczy NFC (prawdziwy lub fałszywy) oraz aplikacja płatnicza NFC obsługująca usługę QuickAccessWalletService (aplikacja portfela). Podstawowe funkcje, które należy przetestować, obejmują dostępność, stan zerowy, wybór karty i zachowanie ekranu blokady.

Dostępność

  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość true i domyślna aplikacja płatnicza NFC obsługuje tę funkcję, portfel szybkiego dostępu jest dostępny.
  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false i domyślna aplikacja płatnicza NFC obsługuje tę funkcję, portfel szybkiego dostępu nie będzie 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, portfel szybkiego dostępu nie będzie dostępny.
  • Jeśli ustawienie GLOBAL_ACTIONS_PANEL_ENABLED ma wartość false i domyślna aplikacja płatnicza NFC nie obsługuje tej funkcji, portfel szybkiego dostępu nie będzie dostępny.

Stan zerowy

  • Jeśli QuickAccessWalletService jest włączona i wyeksportowana, ale nie udostępnia żadnych kart, interfejs użytkownika portfela szybkiego dostępu wyświetla pusty widok stanu.
  • Kliknięcie pustego widoku stanu powoduje otwarcie aplikacji portfela.

    Pusty widok stanu w interfejsie użytkownika portfela szybkiego dostępu
    Rysunek 11. Widok stanu pustego w interfejsie użytkownika Portfela szybkiego dostępu.

Stan niezerowy

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

    Interfejs portfela szybkiego dostępu z wyświetloną kartą
    Rysunek 12. Interfejs portfela szybkiego dostępu z wyświetloną kartą.
  • Jeśli wyświetlona karta reprezentuje metodę płatności NFC, przyłożenie telefonu do terminala płatniczego NFC powoduje użycie tej metody płatności i odrzucenie widoku portfela.

  • Kliknięcie wyświetlonej karty powoduje zamknięcie widoku portfela i otwarcie szczegółowych działań związanych z tą kartą.

  • Jeśli usługa QuickAccessWalletService udostępnia wiele kart, użytkownik może przełączać się między kartami.

  • Rozszerzone menu zawiera dwie pozycje: jedną otwierającą aplikację portfela i drugą otwierającą ekran Pokaż karty i karnety w Ustawieniach.

Testy stanu blokady

  • Jeśli telefon jest zablokowany, widoczność portfela jest kontrolowana przez ustawienie Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT , które można kontrolować w Ustawieniach.
  • Jeśli telefon jest zablokowany i POWER_MENU_LOCK_SHOW_CONTENT ma false , portfel nie jest wyświetlany.
  • Jeśli telefon jest zablokowany i POWER_MENU_LOCK_SHOW_CONTENT ma true , portfel zostanie wyświetlony.
  • Odblokowanie telefonu w czasie, gdy portfel jest wyświetlany na ekranie blokady, powoduje ponowne zapytanie o karty, co może skutkować inną zawartością karty.

Testy dostępności

  • Użytkownicy TalkBack mogą poruszać się po widoku portfela, przesuwając palcem w lewo i w prawo oraz słuchając opisów zawartości kart.
  • Przesuwanie w lewo i w prawo przy włączonej funkcji TalkBack powoduje po kolei wybieranie każdej karty. Użytkownicy TalkBack mogą wybrać metodę płatności NFC i korzystać z niej w terminalu płatniczym NFC.