Portafoglio ad accesso rapido

La funzionalità Quick Access Wallet, disponibile da Android 11, consente all'utente di accedere alle carte di pagamento e ai relativi pass direttamente dal menu di accensione. I principali casi d'uso includono la selezione del metodo di pagamento appropriato prima di eseguire una transazione su un terminale NFC e l'accesso rapido a voli e altri pass per i prossimi eventi.

In Android 12 o versioni successive, la funzionalità Portafoglio ad accesso rapido è disponibile nell'ombra, come mostrato nella Figura 1 e nella Figura 2.

Funzione Portafoglio ad accesso rapido in ombra
Figura 1. Funzionalità Portafoglio ad accesso rapido (dispositivo bloccato).
Funzione Portafoglio ad accesso rapido in ombra
Figura 2. Funzionalità Portafoglio ad accesso rapido (dispositivo sbloccato).

In Android 11, la funzionalità è disponibile dal menu di accensione, come mostrato nella Figura 3.

Funzionalità Portafoglio ad accesso rapido nel menu di accensione
Figura 3. Funzionalità Portafoglio ad accesso rapido nel menu di accensione.

Requisiti

Il tuo dispositivo deve disporre di NFC per utilizzare la funzione Portafoglio ad accesso rapido. La funzionalità si lega a QuickAccessWalletService dell'app di pagamento NFC predefinita, il che significa che il dispositivo deve supportare anche l'emulazione della carta basata su host NFC (HCE) .

Panoramica delle funzionalità

Il Portafoglio ad accesso rapido è composto da due parti: l'interfaccia utente del Portafoglio ad accesso rapido e il fornitore della carta Portafoglio ad accesso rapido.

In Android 12 o versioni successive, l'interfaccia utente di Wallet viene eseguita nell'interfaccia utente di sistema e si trova in frameworks/base/packages/SystemUI/src/com/android/systemui/wallet . In Android 11, l'interfaccia utente di Wallet, che si trova in platform/packages/apps/QuickAccessWallet , deve essere installata e inserita nella whitelist.

Il fornitore della carta Quick Access Wallet è l'app di pagamento NFC predefinita. Gli utenti possono avere più app di pagamento NFC installate contemporaneamente, ma solo l'app di pagamento NFC predefinita può mostrare le carte nel menu di accensione. Puoi specificare quale app di pagamento NFC è impostata inizialmente come predefinita , ma gli utenti possono selezionare un'app diversa in Impostazioni. Se è installata una sola app di pagamento NFC, questa diventa automaticamente quella predefinita (vedi CardEmulationManager ).

Implementazione

Per fornire carte all'interfaccia utente del Portafoglio ad accesso rapido, le app di pagamento NFC devono implementare QuickAccessWalletService . Le app di pagamento devono includere una voce manifest che pubblicizza il servizio.

Per garantire che solo l'interfaccia utente del sistema possa collegarsi a QuickAccessWalletService , l'app di pagamento NFC deve richiedere l'autorizzazione android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE . La richiesta di questa autorizzazione garantisce che solo l'interfaccia utente del sistema possa eseguire l'associazione a 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>

Ulteriori informazioni sul portafoglio sono incluse nel file XML collegato:

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

Successivamente, l'app di pagamento deve implementare 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
    }
}

Se HostApduService inizia a gestire una transazione NFC e, di conseguenza, avvia un'attività per visualizzare lo stato di avanzamento e l'esito del pagamento, dovrebbe anche provare a ottenere un riferimento al QuickAccessWalletService associato e chiamare QuickAccessWalletService#sendEvent con un tipo di evento TYPE_NFC_PAYMENT_STARTED . Ciò fa sì che l'interfaccia utente del Portafoglio ad accesso rapido venga chiusa, consentendo così all'utente una visione senza ostacoli dell'attività di pagamento.

Per ulteriore documentazione sull'implementazione QuickAccessWalletService , consulta QuickAccessWalletService e il test CTS TestQuickAccessWalletService .

Abilitazione dell'interfaccia utente del portafoglio ad accesso rapido in Android 11

Per configurare il Portafoglio ad accesso rapido in modo che sia disponibile dal menu di accensione in Android 11, includi il target QuickAccessWallet nella build e abilita il plug-in globalactions.wallet aggiungendo la riga in grassetto nell'esempio di codice seguente a 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>

Specificare l'app di pagamento NFC predefinita nel file di configurazione delle impostazioni utilizzando def_nfc_payment_component .

L'app di pagamento NFC predefinita deve esporre QuickAccessWalletService per fornire carte al portafoglio ad accesso rapido. Se l'app di pagamento NFC predefinita non esporta questo servizio, l'interfaccia utente del portafoglio è nascosta.

Dettagli sull'implementazione di QuickAccessWalletService

QuickAccessWalletService dispone di tre metodi astratti che devono essere implementati: onWalletCardsRequested , onWalletCardSelected e onWalletDismissed . Il diagramma di sequenza riportato di seguito illustra una sequenza di chiamate quando il portafoglio ad accesso rapido viene visualizzato immediatamente prima di un pagamento NFC.

Diagramma della sequenza del portafoglio ad accesso rapido

Esempio di sequenza di chiamate quando viene visualizzato il Portafoglio ad accesso rapido
Figura 4. Esempio di sequenza di chiamate quando viene visualizzato Quick Access Wallet.

Non tutte le visualizzazioni del Portafoglio ad accesso rapido sono seguite da un pagamento NFC, ma la Figura 4 sopra illustra tutte le funzionalità di QuickAccessWalletService . In questo esempio, il fornitore della carta Quick Access Wallet implementa gli elementi delineati in blu. Si presuppone che le carte di pagamento siano archiviate sul dispositivo in un database e siano accessibili tramite un'interfaccia denominata PaymentCardManager . Si presuppone inoltre che un'attività denominata PaymentActivity visualizzi il risultato di un pagamento NFC. Il flusso procede nel seguente modo:

  1. L'utente esegue un gesto per visualizzare il Portafoglio ad accesso rapido.
  2. L'interfaccia utente del portafoglio Quick Access (parte dell'interfaccia utente di sistema) controlla il gestore pacchetti per verificare se l'app di pagamento NFC predefinita esporta QuickAccessWalletService .

    • Se il servizio non viene esportato, il Portafoglio ad accesso rapido non viene visualizzato.
  3. L'interfaccia utente del portafoglio ad accesso rapido si collega a QuickAccessWalletService e chiama onWalletCardsRequested . Questo metodo accetta un oggetto di richiesta contenente dati sul numero e la dimensione delle carte che possono essere fornite e una richiamata. La richiamata può essere chiamata da un thread in background.

  4. QuickAccessWalletService calcola le carte che desidera mostrare, quindi chiama il metodo onSuccess sul callback fornito. È consigliabile che il servizio esegua queste azioni su un thread in background.

  5. Non appena le carte vengono visualizzate, l'interfaccia utente del sistema notifica QuickAccessWalletService che la prima carta è stata selezionata chiamando onWalletCardSelected .

    • onWalletCardSelected viene chiamato ogni volta che l'utente seleziona una nuova carta.
    • onWalletCardSelected potrebbe essere chiamato anche se la carta attualmente selezionata non è cambiata.
  6. Quando l'utente elimina il portafoglio ad accesso rapido, l'interfaccia utente di sistema invia una notifica a QuickAccessWalletService chiamando onWalletDismissed .

Nell'esempio precedente l'utente porta il telefono nel raggio d'azione di un terminale di pagamento NFC mentre viene visualizzato il portafoglio. Un componente chiave della gestione dei pagamenti NFC è HostApduService , che deve essere implementato per elaborare gli APDU forniti dal lettore NFC (per ulteriori informazioni, vedere Emulazione di carte basata su host ). Si presuppone che l'app di pagamento avvii un'attività per visualizzare l'avanzamento e il risultato dell'interazione con il terminale NFC. Tuttavia, l'interfaccia utente del portafoglio ad accesso rapido viene visualizzata nella parte superiore della finestra dell'app, il che significa che l'attività di pagamento è oscurata dall'interfaccia utente del portafoglio ad accesso rapido. Per risolvere questo problema, l'app deve notificare all'interfaccia utente del sistema che l'interfaccia utente del portafoglio ad accesso rapido deve essere ignorata. Può farlo ottenendo un riferimento al QuickAccessWalletService associato e chiamando sendWalletServiceEvent con il tipo di evento TYPE_NFC_PAYMENT_STARTED .

Implementazione di esempio di 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();
    });
  }
}

Per ulteriori dettagli su QuickAccessWalletService , consulta il riferimento API QuickAccessWalletService .

Autorizzazioni

La voce manifest per QuickAccessWalletService deve richiedere l'autorizzazione android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE introdotta in Android 11. Si tratta di un'autorizzazione a livello di firma posseduta dall'interfaccia utente di sistema, il che significa che solo il processo dell'interfaccia utente di sistema può associarsi alle implementazioni di QuickAccessWalletService . Tieni presente che le app caricate lateralmente possono richiedere questa autorizzazione e ottenere l'accesso completo ai dati QuickAccessWalletService sui dispositivi con Android 10 o versioni precedenti. Per evitare ciò, si consiglia al servizio di verificare la versione della build in onCreate e di abilitare il servizio solo su dispositivi con Android 11 e versioni successive. Non sono richieste altre autorizzazioni per l'app oltre a quelle necessarie per fornire servizi di pagamento di emulazione della carta host.

Se l'app di pagamento NFC predefinita non implementa o esporta QuickAccessWalletService , l'interfaccia utente del portafoglio ad accesso rapido non viene visualizzata.

Impostazioni in Android 12

Per abilitare o disabilitare il Portafoglio ad accesso rapido dalla schermata di blocco, gli utenti possono utilizzare l'interruttore Mostra portafoglio in Impostazioni > Display > Schermata di blocco . Per disabilitare il portafoglio nell'ombra, gli utenti devono modificarlo manualmente nell'ombra delle impostazioni rapide.

Attiva o disattiva il portafoglio dalla schermata di blocco

Figura 5. Mostra l'attivazione/disattivazione del portafoglio nella pagina Schermata di blocco in Impostazioni.

Impostazioni in Android 11

Gli utenti possono disattivare la funzionalità Portafoglio ad accesso rapido dall'app Impostazioni. La pagina delle impostazioni si trova in Impostazioni > Sistema > Gesti > Carte e abbonamenti .

Pagina Impostazioni per abilitare o disabilitare la funzione Portafoglio ad accesso rapido
Figura 6. Pagina Impostazioni per abilitare o disabilitare la funzione Portafoglio ad accesso rapido.

Personalizzazione

Aggiunta della visualizzazione Portafoglio ad accesso rapido in un'altra posizione nell'interfaccia utente del sistema

L' interfaccia utente del portafoglio ad accesso rapido è costruita come plug-in di sistema . Sebbene l'implementazione AOSP ne faccia uso in GlobalActionsDialog (mostrato con una pressione prolungata), è possibile spostare la funzionalità dietro un gesto diverso purché si mantenga il contratto specificato dall'interfaccia del 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);
  }
}

L' interfaccia utente del portafoglio ad accesso rapido implementa GlobalActionsPanelPlugin e PanelViewController . GlobalActionsDialog ottiene un'istanza del plug-in del portafoglio utilizzando com.android.systemui.Dependency :

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

Dopo aver verificato che il plugin sia diverso da null e che il PanelViewController restituito da onPanelShown sia diverso da null, la finestra di dialogo collega la View fornita da getPanelContent alla propria View e fornisce callback appropriati per gli eventi di sistema.

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

Per rimuovere il Portafoglio ad accesso rapido dal menu di accensione, omettere la destinazione QuickAccessWallet dalla build del sistema. Per rimuovere il portafoglio ad accesso rapido dal menu di accensione ma aggiungerlo a una visualizzazione diversa fornita dall'interfaccia utente del sistema, includere la destinazione della build e rimuovere i riferimenti a GlobalActionsPanelPlugin da GlobalActionsImpl .

Impostazione delle configurazioni predefinite

Androide 12

In Android 12 o versioni successive, il Portafoglio ad accesso rapido è sempre visibile nell'area delle impostazioni rapide. La visibilità del Portafoglio ad accesso rapido nella schermata di blocco è controllata dalla seguente impostazione sicura: LOCKSCREEN_SHOW_WALLET . Questa impostazione controlla se l'icona del Portafoglio ad accesso rapido viene visualizzata in basso a destra nella schermata di blocco. Questa impostazione è impostata su true per impostazione predefinita, ma può essere disattivata dall'utente in Impostazioni > Display > Schermata di blocco > Mostra portafoglio .

Androide 11

In Android 11, la visibilità del Portafoglio ad accesso rapido è controllata da due impostazioni sicure: GLOBAL_ACTIONS_PANEL_ENABLED e GLOBAL_ACTIONS_PANEL_AVAILABLE . L'impostazione AVAILABLE controlla se la funzionalità può essere attivata e disattivata in Impostazioni. Questa impostazione è impostata su true da WalletPluginService . Se QuickAccessWallet non è incluso nella build, l'impostazione rimane false . L'impostazione ENABLED è impostata su true per impostazione predefinita nello stesso posto, ma può essere disattivata dall'utente in Impostazioni. Per modificare il comportamento predefinito, modificare WalletPluginService#enableFeatureInSettings .

Validazione

Per convalidare la tua implementazione del Portafoglio ad accesso rapido, esegui CTS e test manuali. Le modifiche al plugin dovrebbero anche esercitare i test robotelettrici inclusi.

Prove CTS

Esegui i test CTS che si trovano in cts/tests/quickaccesswallet .

Test manuali per Android 12

Il test delle funzionalità principali del Portafoglio ad accesso rapido richiede un terminale di pagamento NFC (reale o falso) e un'app di pagamento NFC che implementi QuickAccessWalletService (app portafoglio). Le funzionalità principali che devono essere testate includono: disponibilità, stato zero, selezione della carta e comportamento della schermata di blocco.

Disponibilità

  • Se l'app di pagamento NFC predefinita non supporta questa funzionalità, il Portafoglio ad accesso rapido non è accessibile né dalle impostazioni rapide né dalla schermata di blocco.
  • Se l'app di pagamento NFC predefinita supporta questa funzionalità, il portafoglio ad accesso rapido è accessibile nell'area delle impostazioni rapide.
  • Se l'app di pagamento NFC predefinita supporta questa funzionalità e se l'impostazione LOCKSCREEN_SHOW_WALLET è true , il Portafoglio ad accesso rapido è accessibile dalla schermata di blocco.
  • Se l'app di pagamento NFC predefinita supporta questa funzionalità e se l'impostazione LOCKSCREEN_SHOW_WALLET è false , il portafoglio ad accesso rapido non è accessibile nella schermata di blocco.

Stato zero

  • Se QuickAccessWalletService è abilitato ed esportato ma non fornisce alcuna carta, il riquadro nell'ombra viene visualizzato come mostrato nell'esempio nella Figura 7. Facendo clic sul riquadro si apre l'app di pagamento NFC predefinita.

    Esempio di riquadro in ombra che mostra l'app di pagamento NFC predefinita

    Figura 7. Esempio di riquadro in ombra che mostra l'app di pagamento NFC predefinita.

  • Facendo clic sulla visualizzazione dello stato vuoto come mostrato nella Figura 8 si apre l'app di pagamento NFC predefinita. Questa visualizzazione dello stato vuoto viene visualizzata solo quando l'utente ha una carta rimasta nel portafoglio, rimuove la carta dalla pagina dei dettagli della carta e quindi torna alla visualizzazione del portafoglio.

  • La schermata di blocco mostra l'icona del portafoglio.

Visualizzazione dello stato vuoto nel Portafoglio ad accesso rapido

Figura 8. Visualizzazione dello stato vuoto nell'interfaccia utente del portafoglio ad accesso rapido.

Stato diverso da zero

  • Se l'app Wallet fornisce una o più carte, il riquadro ombreggiato appare come mostrato nella Figura 9.

    Esempio di riquadro in ombra quando l'app Wallet ha una o più carte

    Figura 9. Esempio di riquadro in ombra quando l'app Wallet ha una o più carte.

  • Facendo clic sul riquadro viene visualizzato un carosello di carte.

  • La schermata di blocco mostra un pulsante che apre il Portafoglio ad accesso rapido.

    Interfaccia utente del portafoglio ad accesso rapido con una carta visualizzata

    Figura 10. Interfaccia utente del portafoglio ad accesso rapido con una carta visualizzata.

  • Se la carta visualizzata rappresenta un metodo di pagamento NFC, avvicinando il telefono a un terminale di pagamento NFC verrà utilizzato quel metodo di pagamento e la visualizzazione del portafoglio verrà ignorata.

  • Facendo clic su una carta visualizzata si apre l'attività dettagliata per quella carta.

  • Se QuickAccessWalletService fornisce più carte, l'utente può scorrere tra le carte.

  • Il menu extra contiene una voce: apre le impostazioni della schermata di blocco in modo che l'utente possa modificare l'opzione Mostra portafoglio .

Blocca i test sullo stato

  • Se il telefono è bloccato, il portafoglio è visibile nell'area delle impostazioni rapide, con una descrizione Aggiungi una carta se non esiste alcuna carta nell'app di pagamento predefinita o sblocca per utilizzarlo se esistono carte nell'app di pagamento predefinita.
  • Se il telefono è bloccato, la visibilità del portafoglio nella schermata di blocco è controllata dall'impostazione Secure.LOCKSCREEN_SHOW_WALLET , che è controllata in Impostazioni.
  • Se il telefono è bloccato, LOCKSCREEN_SHOW_WALLET è false e non esiste alcuna carta nell'app di pagamento NFC predefinita, il portafoglio non viene visualizzato nella schermata di blocco.
  • Se il telefono è bloccato, LOCKSCREEN_SHOW_WALLET è true e non esiste alcuna carta nell'app di pagamento NFC predefinita, il portafoglio non viene visualizzato nella schermata di blocco.
  • Se il telefono è bloccato, LOCKSCREEN_SHOW_WALLET è true e le carte esistono nell'app di pagamento NFC predefinita, il portafoglio viene visualizzato nella schermata di blocco.
  • Lo sblocco del telefono mentre il portafoglio è visualizzato nella schermata di blocco comporta una nuova richiesta delle carte, il che potrebbe comportare un contenuto diverso della carta.

Test di accessibilità

  • Gli utenti di Talkback possono navigare nella visualizzazione del portafoglio scorrendo verso sinistra e verso destra e ascoltando le descrizioni dei contenuti delle carte.
  • Scorri verso sinistra e verso destra con Talkback abilitato per selezionare ciascuna carta a turno. Gli utenti Talkback possono selezionare e utilizzare un metodo di pagamento NFC su un terminale di pagamento NFC.

Test manuali per Android 11

Il test delle funzionalità principali del Portafoglio ad accesso rapido richiede un terminale di pagamento NFC (reale o falso) e un'app di pagamento NFC che implementi QuickAccessWalletService (app portafoglio). Le funzionalità principali che devono essere testate includono disponibilità, stato zero, selezione della carta e comportamento della schermata di blocco.

Disponibilità

  • Se l'impostazione GLOBAL_ACTIONS_PANEL_ENABLED è true e l'app di pagamento NFC predefinita supporta la funzione, il Portafoglio ad accesso rapido è accessibile.
  • Se l'impostazione GLOBAL_ACTIONS_PANEL_ENABLED è false e l'app di pagamento NFC predefinita supporta la funzionalità, il portafoglio ad accesso rapido non è accessibile.
  • Se l'impostazione GLOBAL_ACTIONS_PANEL_ENABLED è true e l'app di pagamento NFC predefinita non supporta la funzione, il portafoglio ad accesso rapido non è accessibile.
  • Se l'impostazione GLOBAL_ACTIONS_PANEL_ENABLED è false e l'app di pagamento NFC predefinita non supporta la funzione, il portafoglio ad accesso rapido non è accessibile.

Stato zero

  • Se QuickAccessWalletService è abilitato ed esportato ma non fornisce alcuna carta, l'interfaccia utente del Portafoglio ad accesso rapido visualizza la visualizzazione dello stato vuoto.
  • Facendo clic sulla visualizzazione dello stato vuoto si apre l'app Wallet.

    Visualizzazione dello stato vuoto nell'interfaccia utente del Portafoglio ad accesso rapido
    Figura 11. Visualizzazione dello stato vuoto nell'interfaccia utente del portafoglio ad accesso rapido.

Stato diverso da zero

  • Se l'app Wallet fornisce una o più carte, le carte vengono visualizzate nell'interfaccia utente del Wallet ad accesso rapido.

    Interfaccia utente del portafoglio ad accesso rapido con una carta visualizzata
    Figura 12. Interfaccia utente del portafoglio ad accesso rapido con una carta visualizzata.
  • Se la carta visualizzata rappresenta un metodo di pagamento NFC, avvicinando il telefono a un terminale di pagamento NFC verrà utilizzato quel metodo di pagamento e la visualizzazione del portafoglio verrà ignorata.

  • Facendo clic su una carta visualizzata si chiude la visualizzazione del portafoglio e si apre l'attività dettagliata per quella carta.

  • Se QuickAccessWalletService fornisce più carte, l'utente può scorrere tra le carte.

  • Il menu extra contiene due voci: una che apre l'app Wallet e una che apre la schermata Mostra carte e abbonamenti in Impostazioni.

Blocca i test sullo stato

  • Se il telefono è bloccato, la visibilità del portafoglio è controllata dall'impostazione Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT , che può essere controllata in Impostazioni.
  • Se il telefono è bloccato e POWER_MENU_LOCK_SHOW_CONTENT è false , il portafoglio non viene visualizzato.
  • Se il telefono è bloccato e POWER_MENU_LOCK_SHOW_CONTENT è true , viene visualizzato il portafoglio.
  • Lo sblocco del telefono mentre il portafoglio è visualizzato nella schermata di blocco comporta una nuova interrogazione delle carte, il che potrebbe comportare un contenuto diverso della carta.

Test di accessibilità

  • Gli utenti TalkBack possono navigare nella visualizzazione del portafoglio scorrendo verso sinistra e destra e ascoltando le descrizioni dei contenuti delle carte.
  • Scorrendo verso sinistra e destra con TalkBack abilitato seleziona ciascuna carta a turno. Gli utenti TalkBack possono selezionare e utilizzare un metodo di pagamento NFC su un terminale di pagamento NFC.