Accesso rapido a Wallet

La funzionalità Portafoglio di accesso rapido, disponibile da Android 11, consente all'utente di accedere alle carte di pagamento e alle tessere pertinenti direttamente dal menu di accensione. I principali casi d'uso sono la selezione del metodo di pagamento appropriato prima di eseguire una transazione presso un terminale NFC e l'accesso rapido a voli e altri pass per eventi futuri.

In Android 12 o versioni successive, la funzionalità Wallet di accesso rapido è disponibile dalla tenda, come mostrato nelle figure 1 e 2.

Funzionalità Wallet di accesso rapido in un'area
Figura 1. Funzionalità Wallet ad accesso rapido (dispositivo bloccato).
Funzionalità Accesso rapido a Wallet nell'area notifiche
Figura 2. Funzionalità Accesso rapido a Wallet (dispositivo sbloccato).

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

Funzionalità Accesso rapido a Wallet nel menu del tasto di accensione
Figura 3. Funzionalità Accesso rapido a Wallet nel menu di accensione.

Requisiti

Per utilizzare la funzionalità di accesso rapido a Wallet, il dispositivo deve supportare la tecnologia NFC. La funzionalità si collega a QuickAccessWalletService dell'app di pagamento NFC predefinita, il che significa che il dispositivo deve supportare anche l'emulazione di carte basate su host (HCE) NFC.

Panoramica delle funzionalità

La sezione Wallet ad accesso rapido è composta da due parti: l'interfaccia utente di Wallet ad accesso rapido e il fornitore di carte Wallet 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 lista consentita.

Il fornitore della carta Wallet ad accesso rapido è 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 del tasto di accensione. Puoi specificare quale app di pagamento NFC deve essere impostata inizialmente come predefinita, ma gli utenti possono selezionare un'altra app nelle Impostazioni. Se è installata una sola app di pagamento NFC, diventa automaticamente quella predefinita (vedi CardEmulationManager).

Implementazione

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

Per assicurarti che solo l'interfaccia utente di sistema possa associarsi 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 di sistema possa associarsi 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>

Nel file XML collegato sono incluse informazioni aggiuntive sul portafoglio:

<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 l'avanzamento e l'esito del pagamento, deve anche provare a ottenere un riferimento al QuickAccessWalletService vincolato e chiamare QuickAccessWalletService#sendEvent con un tipo di evento TYPE_NFC_PAYMENT_STARTED. Di conseguenza, l'interfaccia utente del portafoglio di accesso rapido viene chiusa, consentendo all'utente di visualizzare senza ostacoli l'attività di pagamento.

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

Attiva l'interfaccia utente di Wallet con accesso rapido in Android 11

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

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

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

Dettagli implementazione QuickAccessWalletService

QuickAccessWalletService ha 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 di accesso rapido viene visualizzato immediatamente prima di un pagamento NFC.

Diagramma di sequenza di Wallet con accesso rapido

Sequenza di chiamate di esempio quando viene visualizzato il portafoglio di Accesso rapido
Figura 4. Esempio di sequenza di chiamate quando viene visualizzato Accesso rapido a Wallet.

Non tutte le visualizzazioni del Wallet di accesso rapido sono seguite da un pagamento NFC, ma la Figura 4 sopra illustra tutte le funzionalità diQuickAccessWalletService. In questo esempio, il fornitore della carta Wallet con accesso rapido implementa gli elementi evidenziati in blu. Si presume che le carte di pagamento siano memorizzate sul dispositivo in un database e che sia possibile accedervi tramite un'interfaccia denominata PaymentCardManager. Si presume inoltre che un'attività chiamata PaymentActivity mostri il risultato di un pagamento NFC. Il flusso procede come segue:

  1. L'utente esegue un gesto per visualizzare il portafoglio di accesso rapido.
  2. L'interfaccia utente del portafoglio di accesso rapido (parte dell'interfaccia utente di sistema) controlla il gestore del pacchetto per verificare se l'app di pagamento NFC predefinita esportaQuickAccessWalletService.

    • Se il servizio non viene esportato, il portafoglio di Accesso rapido non viene visualizzato.
  3. L'interfaccia utente di Wallet ad accesso rapido si associa a QuickAccessWalletService e chiama onWalletCardsRequested. Questo metodo riceve un oggetto request contenente dati sul numero e sulle dimensioni delle schede che possono essere fornite e un callback. Il callback può essere chiamato da un thread in background.

  4. QuickAccessWalletService calcola le schede che vuole mostrare, quindi chiama il metodo onSuccess sul callback fornito. Consigliamo che il servizio esegua queste azioni su un thread in background.

  5. Non appena vengono visualizzate le schede, l'interfaccia utente di sistema informaQuickAccessWalletService che è stata selezionata la prima scheda chiamandoonWalletCardSelected.

    • onWalletCardSelected viene chiamato ogni volta che l'utente seleziona una nuova scheda.
    • onWalletCardSelected potrebbe essere chiamato anche se la scheda attualmente selezionata non è cambiata.
  6. Quando l'utente chiude il Wallet ad accesso rapido, l'UI di sistema avvisa QuickAccessWalletService chiamando il numero onWalletDismissed.

Nell'esempio precedente, l'utente avvicina lo smartphone al raggio d'azione di un terminale di pagamento NFC mentre viene visualizzato il portafoglio. Un componente chiave per la gestione dei pagamenti NFC è HostApduService, che deve essere implementato per elaborare gli APDU forniti dal lettore NFC (per ulteriori informazioni, consulta Emulazione di carte basata su host). Si presume 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 di Wallet con accesso rapido viene visualizzata nella parte superiore della finestra dell'app, il che significa che l'attività di pagamento è oscurata dall'interfaccia utente di Wallet con accesso rapido. Per risolvere il problema, l'app deve informare l'interfaccia utente di sistema che l'interfaccia utente di Wallet con accesso rapido deve essere chiusa. Per farlo, deve recuperare un riferimento al valore associato QuickAccessWalletService e chiamare sendWalletServiceEvent con il tipo di evento TYPE_NFC_PAYMENT_STARTED.

Esempio di implementazione 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 Riferimento all'API QuickAccessWalletService.

Autorizzazioni

La voce del file manifest 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 detenuta dall'interfaccia utente di sistema, il che significa che solo il processo dell'interfaccia utente di sistema può eseguire il binding alle implementazioni di QuickAccessWalletService. Tieni presente che le app installate in sideload possono richiedere questa autorizzazione e avere accesso completo ai dati di QuickAccessWalletService sui dispositivi con Android 10 o versioni precedenti. Per evitare che questo accada, consigliamo al servizio di controllare 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 le app oltre a quelle necessarie per fornire servizi di pagamento con emulazione della carta host.

Se l'app di pagamento NFC predefinita non implementa o esportaQuickAccessWalletService, l'interfaccia utente di Wallet accesso rapido non viene visualizzata.

Impostazioni in Android 12

Per attivare o disattivare il portafoglio di accesso rapido dalla schermata di blocco, gli utenti possono utilizzare l'opzione di attivazione/disattivazione Mostra portafoglio in Impostazioni > Display > Schermata di blocco. Per disattivare il portafoglio nella tenda, gli utenti devono modificarlo manualmente nella tenda delle Impostazioni rapide.

Attiva/disattiva per abilitare o disabilitare il portafoglio dalla schermata di blocco

Figura 5. Mostra l'opzione di attivazione/disattivazione del portafoglio nella pagina Blocco schermo delle Impostazioni.

Impostazioni in Android 11

Gli utenti possono disattivare la funzionalità Wallet di accesso rapido dall'app Impostazioni. La pagina delle impostazioni si trova in Impostazioni > Sistema > Gesti > Schede e tessere.

Pagina Impostazioni per attivare o disattivare la funzionalità Wallet di accesso rapido
Figura 6. Pagina Impostazioni per attivare o disattivare la funzionalità Accesso rapido a Wallet.

Personalizzazione

Aggiungi la visualizzazione Wallet ad accesso rapido a un'altra posizione nell'interfaccia utente di sistema

L'interfaccia utente di Accesso rapido a Wallet è realizzata come plug-in di sistema. Sebbene l'implementazione AOSP la utilizzi in GlobalActionsDialog (mostrata con una lunga pressione del tasto di accensione), puoi spostare la funzionalità dietro un gesto diverso purché tu mantenga il contratto specificato dall'interfaccia del plug-in.

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 di Wallet con accesso rapido implementa GlobalActionsPanelPlugin e PanelViewController. GlobalActionsDialog recupera un'istanza del plug-in Wallet utilizzando com.android.systemui.Dependency:

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

Dopo aver verificato che il plug-in non sia nullo e che PanelViewController restituito da onPanelShown non lo sia, la finestra di dialogo collega il View fornito da getPanelContent al proprio View e fornisce i 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 di accesso rapido dal menu di accensione, ometti il target QuickAccessWallet dalla build di sistema. Per rimuovere il portafoglio Accesso rapido dal menu di accensione, ma aggiungerlo a un'altra visualizzazione fornita dall'interfaccia utente di sistema, includi il target di compilazione e rimuovi i riferimenti a GlobalActionsPanelPlugin da GlobalActionsImpl.

Imposta configurazioni predefinite

Android 12

In Android 12 o versioni successive, Wallet con accesso rapido è sempre visibile nella tendina delle impostazioni rapide. La visibilità del portafoglio Accesso rapido nella schermata di blocco è limitata dalla seguente impostazione sicura:LOCKSCREEN_SHOW_WALLET. Questa impostazione controlla se mostrare o meno l'icona di Wallet ad accesso rapido in basso a destra nella schermata di blocco. Questa opzione è impostata su true per impostazione predefinita, ma può essere disattivata dall'utente in Impostazioni > Display > Schermata di blocco > Mostra Wallet.

Android 11

In Android 11, la visibilità di Wallet con accesso rapido è limitata da due impostazioni di sicurezza:GLOBAL_ACTIONS_PANEL_ENABLED e GLOBAL_ACTIONS_PANEL_AVAILABLE. L'impostazione AVAILABLE controlla se la funzionalità può essere attivata e disattivata nelle Impostazioni. Questa impostazione è impostata su true da WalletPluginService. Se QuickAccessWallet non è incluso nella compilazione, l'impostazione rimanefalse. L'impostazione ENABLED è impostata su true per impostazione predefinita nella stessa posizione, ma può essere disattivata dall'utente nelle Impostazioni. Per modificare il comportamento predefinito, modifica WalletPluginService#enableFeatureInSettings.

Convalida

Per convalidare l'implementazione del portafoglio di accesso rapido, esegui i test CTS e manuali. Le modifiche al plug-in devono anche applicare i test robolectrici inclusi.

Test CTS

Esegui i test CTS disponibili all'indirizzo cts/tests/quickaccesswallet.

Test manuali per Android 12

Per testare le funzionalità di base del Wallet di accesso rapido è necessario un terminale di pagamento NFC (reale o simulato) e un'app di pagamento NFC che implementiQuickAccessWalletService (app wallet). Le funzionalità di base che devono essere testate includere: disponibilità, stato zero, selezione della scheda e comportamento della schermata di blocco.

Disponibilità

  • Se l'app di pagamento NFC predefinita non supporta la funzionalità, il portafoglio ad accesso rapido non è accessibile né nelle impostazioni rapide né nella schermata di blocco.
  • Se l'app di pagamento NFC predefinita supporta la funzionalità, il portafoglio di accesso rapido è accessibile nella tendina delle Impostazioni rapide.
  • Se l'app di pagamento NFC predefinita supporta la funzionalità e se l'impostazione LOCKSCREEN_SHOW_WALLET è true, il portafoglio di accesso rapido è accessibile nella schermata di blocco.
  • Se l'app di pagamento NFC predefinita supporta la funzionalità e se l'impostazione LOCKSCREEN_SHOW_WALLET è false, Wallet di accesso rapido non è accessibile nella schermata di blocco.

Stato zero

  • Se QuickAccessWalletService è attivato ed esportato, ma non fornisce schede, il riquadro nell'area Ombreggiata viene visualizzato come mostrato nell'esempio della Figura 7. Se fai clic sul riquadro, si apre l'app di pagamento NFC predefinita.

    Riquadro di esempio nell&#39;area che mostra l&#39;app di pagamento NFC predefinita

    Figura 7. Riquadro di esempio nell'area ombreggiata che mostra l'app di pagamento NFC predefinita.

  • Se fai 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 torna alla visualizzazione del portafoglio.

  • Nella schermata di blocco viene visualizzata l'icona del portafoglio.

Visualizzazione dello stato vuoto nel portafoglio Accesso rapido

Figura 8. Visualizzazione dello stato vuoto nell'interfaccia utente di Accesso rapido a Wallet.

Stato diverso da zero

  • Se l'applicazione Wallet fornisce una o più carte, il riquadro nell'area viene visualizzato come mostrato nella Figura 9.

    Esempio di riquadro in ombra quando l&#39;app Wallet ha una o più carte

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

  • Se fai clic sul riquadro, viene visualizzato un carosello di schede.

  • Nella schermata di blocco viene visualizzato un pulsante che apre Wallet con accesso rapido.

    Interfaccia utente di Wallet con accesso rapido con una carta visualizzata

    Figura 10. Interfaccia utente di Accesso rapido a Wallet con una carta visualizzata.

  • Se la carta visualizzata rappresenta un metodo di pagamento NFC, avvicinando lo smartphone a un terminale di pagamento NFC viene utilizzato questo metodo di pagamento e la visualizzazione del portafoglio viene chiusa.

  • Se fai clic su una scheda visualizzata, si apre l'attività dettagliata della scheda.

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

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

Test dello stato della serratura

  • Se lo smartphone è bloccato, il Wallet è visibile nella schermata delle impostazioni rapide, con la descrizione Aggiungi una carta se non è presente alcuna carta nell'app pagamenti predefinita o Sblocca per usare se sono presenti carte nell'app pagamenti predefinita.
  • Se lo smartphone è bloccato, la visibilità del portafoglio nella schermata di blocco è controllata dall'impostazione Secure.LOCKSCREEN_SHOW_WALLET, che si controlla nelle Impostazioni.
  • Se lo smartphone è 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 lo smartphone è 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 lo smartphone è bloccato, LOCKSCREEN_SHOW_WALLET è true e le carte esistono nell'app di pagamento NFC predefinita, il portafoglio viene visualizzato nella schermata di blocco.
  • Se sblocchi lo smartphone mentre il portafoglio è visualizzato sullo schermo di blocco, le carte vengono richieste di nuovo, il che potrebbe comportare contenuti diversi delle carte.

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 schede.
  • Se Talkback è attivo, scorrendo verso sinistra e verso destra viene selezionata ogni scheda. Gli utenti di Talkback possono selezionare e utilizzare un metodo di pagamento NFC presso un terminale di pagamento NFC.

Test manuali per Android 11

Per testare le funzionalità di base del Wallet di accesso rapido è necessario un terminale di pagamento NFC (reale o simulato) e un'app di pagamento NFC che implementiQuickAccessWalletService (app wallet). Le funzionalità principali che devono essere testate includono disponibilità, stato zero, selezione delle carte e comportamento della schermata di blocco.

Disponibilità

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

Stato zero

  • Se QuickAccessWalletService è attivato ed esportato, ma non fornisce carte, l'interfaccia utente di Accesso rapido a Wallet mostra la visualizzazione dello stato vuoto.
  • Se fai clic sulla visualizzazione dello stato vuoto, si apre l'app Wallet.

    Visualizzazione dello stato vuota nell&#39;interfaccia utente di Wallet ad accesso rapido
    Figura 11. Visualizzazione dello stato vuoto nell'interfaccia utente di Accesso rapido a Wallet.

Stato diverso da zero

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

    Interfaccia utente di Wallet con accesso rapido con una carta visualizzata
    Figura 12. Interfaccia utente di Accesso rapido a Wallet con una carta visualizzata.
  • Se la carta visualizzata rappresenta un metodo di pagamento NFC, avvicinando lo smartphone a un terminale di pagamento NFC viene utilizzato questo metodo di pagamento e la visualizzazione del portafoglio viene chiusa.

  • Se fai clic su una scheda visualizzata, la visualizzazione del portafoglio viene chiusa e si apre l'attività dettagliata della scheda.

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

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

Test dello stato della serratura

  • Se lo smartphone è bloccato, la visibilità di Wallet è controllata dall'impostazione Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT, che può essere controllata nelle Impostazioni.
  • Se lo smartphone è bloccato e POWER_MENU_LOCK_SHOW_CONTENT è false, il portafoglio non viene visualizzato.
  • Se lo smartphone è bloccato e POWER_MENU_LOCK_SHOW_CONTENT è true, viene visualizzato il portafoglio.
  • Se sblocchi lo smartphone mentre il portafoglio è visualizzato sulla schermata di blocco, le carte vengono sottoposte nuovamente a query, il che potrebbe comportare contenuti diversi delle carte.

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 schede.
  • Se TalkBack è attivo, scorrendo verso sinistra e verso destra viene selezionata ogni scheda in sequenza. Gli utenti di TalkBack possono selezionare e utilizzare un metodo di pagamento NFC presso un terminale di pagamento NFC.