La función Acceso rápido a Wallet, disponible a partir de Android 11, permite que el usuario acceda a tarjetas de pago y pases relevantes directamente desde el menú de encendido. Los casos de uso principales incluyen seleccionar la forma de pago adecuada antes de realizar una transacción en una terminal NFC y acceder rápidamente a vuelos y otros pases para eventos próximos.
En Android 12 o versiones posteriores, la función de Acceso rápido a Wallet está disponible desde el panel, como se muestra en las Figuras 1 y 2.
En Android 11, la función está disponible en el menú de encendido, como se muestra en la Figura 3.
Requisitos
Tu dispositivo debe tener NFC para usar la función de acceso rápido a la Billetera. La función se vincula a QuickAccessWalletService
de la app de pago NFC predeterminada, lo que significa que el dispositivo también debe admitir la emulación de tarjetas basada en host (HCE) de NFC.
Descripción general de las funciones
La Billetera de acceso rápido tiene dos partes: la IU de la Billetera de acceso rápido y el proveedor de tarjetas de la Billetera de acceso rápido.
En Android 12 o versiones posteriores, la IU de la Billetera se ejecuta en la IU del sistema y se ubica en frameworks/base/packages/SystemUI/src/com/android/systemui/wallet
. En Android 11, la IU de la Billetera, que se encuentra en platform/packages/apps/QuickAccessWallet
, se debe instalar y agregar a la lista blanca.
El proveedor de tarjetas de Acceso rápido a la Billetera es la app de pagos NFC predeterminada. Los usuarios pueden tener varias apps de pagos NFC instaladas de forma simultánea, pero solo la app de pagos NFC predeterminada puede mostrar tarjetas en el menú de encendido. Puedes especificar qué app de pago NFC se establece como predeterminada inicialmente, pero los usuarios pueden seleccionar una app diferente en Configuración. Si solo se instala una app de pagos NFC, se convierte en la predeterminada automáticamente (consulta CardEmulationManager
).
Implementación
Para proporcionar tarjetas a la IU de la Billetera de acceso rápido, las apps de pago con NFC deben implementar QuickAccessWalletService
.
Las aplicaciones de pago deben incluir una entrada de manifiesto que anuncie el servicio.
Para garantizar que solo la IU del sistema pueda vincularse a QuickAccessWalletService
, la app de pagos NFC debe requerir el permiso android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE
. Exigir este permiso garantiza que solo la IU del sistema pueda vincularse 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>
La información adicional sobre la billetera se incluye en el archivo en formato XML vinculado:
<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"/>
A continuación, la app de pagos debe implementar 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
}
}
Si HostApduService
comienza a controlar una transacción NFC y, como consecuencia, inicia una actividad para mostrar el progreso y el resultado del pago, también debe intentar obtener una referencia al QuickAccessWalletService
vinculado y llamar a QuickAccessWalletService#sendEvent
con un tipo de evento de TYPE_NFC_PAYMENT_STARTED
. Esto hace que se descarte la IU de la billetera de acceso rápido, lo que le permite al usuario ver la actividad de pago sin obstrucciones.
Para obtener documentación adicional sobre la implementación de QuickAccessWalletService
, consulta QuickAccessWalletService
y la prueba de CTS de TestQuickAccessWalletService
.
Habilita la IU de Acceso rápido a Billetera en Android 11
Si deseas configurar la Billetera de Acceso rápido para que esté disponible desde el menú de encendido en Android 11, incluye el objetivo QuickAccessWallet
en la compilación y habilita el complemento globalactions.wallet
agregando la línea en negrita de la siguiente muestra de código al archivo 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>
Especifica la app de pagos NFC predeterminada en el archivo de configuración de parámetros con def_nfc_payment_component
.
La app de pagos NFC predeterminada debe exponer QuickAccessWalletService
para proporcionar tarjetas a la Billetera de acceso rápido. Si la app de pagos NFC predeterminada
no exporta este servicio, se oculta la IU de la billetera.
Detalles de la implementación de QuickAccessWalletService
QuickAccessWalletService
tiene tres métodos abstractos que se deben implementar: onWalletCardsRequested
, onWalletCardSelected
y onWalletDismissed
. En el siguiente diagrama de secuencias, se ilustra una secuencia de llamadas cuando la Billetera de Acceso rápido se ve inmediatamente antes de un pago NFC.
No todas las vistas de la Billetera de Acceso rápido van seguidas de un pago NFC, pero la Figura 4 anterior ilustra todas las funciones de QuickAccessWalletService
. En este ejemplo, el proveedor de tarjetas de Acceso rápido a Wallet implementa los elementos descritos en azul. Se supone que las tarjetas de pago se almacenan en el dispositivo en una base de datos y se accede a ellas a través de una interfaz llamada PaymentCardManager
. Además, se supone que una actividad llamada PaymentActivity
muestra el resultado de un pago NFC. El flujo procede de la siguiente manera:
- El usuario realiza un gesto para abrir la Billetera de acceso rápido.
La IU de la Billetera de Acceso rápido (parte de la IU del sistema) revisa el administrador de paquetes para ver si la app de pagos NFC predeterminada exporta
QuickAccessWalletService
.- Si no se exporta el servicio, no se mostrará la Billetera de acceso rápido.
La IU de Acceso rápido a Billetera se vincula a
QuickAccessWalletService
y llama aonWalletCardsRequested
. Este método toma un objeto de solicitud que contiene datos sobre la cantidad y el tamaño de las tarjetas que se pueden proporcionar, y una devolución de llamada. Se puede llamar a la devolución de llamada desde un subproceso en segundo plano.QuickAccessWalletService
calcula las tarjetas que desea mostrar y, luego, llama al métodoonSuccess
en la devolución de llamada proporcionada. Se recomienda que el servicio realice estas acciones en un subproceso en segundo plano.En cuanto se muestran las tarjetas, la IU del sistema notifica a
QuickAccessWalletService
que se seleccionó la primera tarjeta llamando aonWalletCardSelected
.- Se llama a
onWalletCardSelected
cada vez que el usuario selecciona una tarjeta nueva. - Es posible que se llame a
onWalletCardSelected
incluso si la tarjeta seleccionada actualmente no cambió.
- Se llama a
Cuando el usuario descarta la Billetera de Acceso rápido, la IU del sistema notifica a
QuickAccessWalletService
llamando aonWalletDismissed
.
En el ejemplo anterior, el usuario acerca el teléfono al alcance de una terminal de pago NFC mientras se muestra la billetera. Un componente clave para controlar los pagos NFC es HostApduService
, que debe implementarse para procesar las APDU proporcionadas por el lector de NFC (para obtener más información, consulta Emulación de tarjetas basada en el host).
Se supone que la app de pagos inicia una actividad para mostrar el progreso y el resultado de la interacción con la terminal NFC. Sin embargo, la IU de la Billetera de acceso rápido se muestra en la parte superior de la ventana de la app, lo que significa que la IU de la Billetera de acceso rápido oculta la actividad de pago. Para rectificar este problema, la app debe notificar a la IU del sistema que se debe descartar la IU de la Billetera de Acceso rápido. Para ello, puede obtener una referencia al QuickAccessWalletService
vinculado y llamar a sendWalletServiceEvent
con el tipo de evento TYPE_NFC_PAYMENT_STARTED
.
Implementación de muestra de 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();
});
}
}
Para obtener más detalles sobre QuickAccessWalletService
, consulta la referencia de la API de QuickAccessWalletService
.
Permisos
La entrada del manifiesto para QuickAccessWalletService
debe requerir el permiso android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE
que se introdujo en Android 11. Este es un permiso de nivel de firma de la IU del sistema, lo que significa que solo el proceso de la IU del sistema puede vincularse a implementaciones de QuickAccessWalletService
. Ten en cuenta que las apps transferidas lateralmente pueden reclamar este permiso y obtener acceso completo a los datos de QuickAccessWalletService
en dispositivos que ejecutan Android 10 o versiones anteriores. Para evitar esto, se recomienda que el servicio verifique la versión de compilación en onCreate
y habilite el servicio solo en dispositivos con Android 11 y versiones posteriores. No se requieren otros permisos de la app además de los necesarios para proporcionar servicios de pago de emulación de tarjetas de host.
Si la app de pago NFC predeterminada no implementa ni exporta QuickAccessWalletService
, no se mostrará la IU de la Billetera de acceso rápido.
Configuración de Android 12
Para habilitar o inhabilitar la Billetera de acceso rápido desde la pantalla de bloqueo, los usuarios pueden usar el botón de activación Mostrar billetera en Configuración > Pantalla > Pantalla de bloqueo. Para inhabilitar la billetera en la pantalla de notificaciones, los usuarios deben editarla manualmente en la pantalla de configuración rápida.
Figura 5: Mostrar el botón de activación de la billetera en la página de la pantalla de bloqueo en Configuración.
Configuración en Android 11
Los usuarios pueden desactivar la función de billetera de acceso rápido desde la app de Configuración. La página de configuración se encuentra en Configuración > Sistema > Gestos > Tarjetas y pases.
Personalización
Agrega la vista de Acceso rápido de Wallet a otra ubicación en la IU del sistema
La IU de Acceso rápido a Billetera se compiló como un complemento del sistema.
Aunque la implementación de AOSP la usa en GlobalActionsDialog
(que se muestra con una presión prolongada del botón de encendido), puedes mover la función detrás de un gesto diferente, siempre que mantengas el contrato especificado por la interfaz del complemento.
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);
}
}
La IU de Acceso rápido de la Billetera implementa GlobalActionsPanelPlugin
y PanelViewController
.
GlobalActionsDialog
obtiene una instancia del complemento de billetera con com.android.systemui.Dependency
:
GlobalActionsPanelPlugin mPanelPlugin =
Dependency.get(ExtensionController.class)
.newExtension(GlobalActionsPanelPlugin.class)
.withPlugin(GlobalActionsPanelPlugin.class)
.build()
.get();
Después de verificar que el complemento no sea nulo y que el PanelViewController
que muestra onPanelShown
no sea nulo, el diálogo adjunta el View
que proporciona getPanelContent
a su propio View
y proporciona devoluciones de llamada adecuadas para los eventos del 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();
Para quitar la Billetera de acceso rápido del menú de encendido, omite el objetivo QuickAccessWallet
de la compilación del sistema. Para quitar la billetera de acceso rápido del menú de encendido, pero agregarla a una vista diferente proporcionada por la IU del sistema, incluye el objetivo de compilación y quita las referencias a GlobalActionsPanelPlugin
de GlobalActionsImpl
.
Establece parámetros de configuración predeterminados
Android 12
En Android 12 o versiones posteriores, la Billetera de acceso rápido siempre se muestra en el panel de Configuración rápida. La siguiente configuración de seguridad impide la visibilidad de la Billetera de Acceso rápido en la pantalla de bloqueo: LOCKSCREEN_SHOW_WALLET
. Este parámetro de configuración controla si el ícono de Acceso rápido a la Billetera se muestra en la parte inferior derecha de la pantalla de bloqueo. Este parámetro de configuración se establece en true
de forma predeterminada, pero el usuario puede desactivarlo en Configuración > Pantalla > Pantalla de bloqueo > Mostrar billetera.
Android 11
En Android 11, la visibilidad de Acceso rápido a la Billetera está restringida por dos parámetros de configuración seguros: GLOBAL_ACTIONS_PANEL_ENABLED
y GLOBAL_ACTIONS_PANEL_AVAILABLE
. El parámetro AVAILABLE
controla si la función se puede activar o desactivar en Configuración. WalletPluginService
establece este parámetro de configuración en true
.
Si QuickAccessWallet
no se incluye en la compilación, el parámetro de configuración permanecerá en
false
. El parámetro de configuración ENABLED
se establece en true
de forma predeterminada en el mismo lugar, pero el usuario puede desactivarlo en Configuración. Para cambiar el comportamiento predeterminado, modifica WalletPluginService#enableFeatureInSettings
.
Validación
Para validar tu implementación de la Billetera de acceso rápido, ejecuta CTS y pruebas manuales. Los cambios en el complemento también deben ejercitar las pruebas de robolectric incluidas.
Pruebas del CTS
Ejecuta las pruebas del CTS ubicadas en cts/tests/quickaccesswallet
.
Pruebas manuales para Android 12
Para probar las funciones principales de la Billetera de acceso rápido, se requiere una terminal de pago NFC (real o falsa) y una app de pago NFC que implemente QuickAccessWalletService
(app de billetera). Las funciones principales que se deben probar incluyen la disponibilidad, el estado cero, la selección de tarjetas y el comportamiento de la pantalla de bloqueo.
Disponibilidad
- Si la app de pago NFC predeterminada no admite la función, no se puede acceder a la Billetera de acceso rápido en la configuración rápida ni en la pantalla de bloqueo.
- Si la app de pagos NFC predeterminada admite la función, se puede acceder a la billetera de acceso rápido en la pantalla de Configuración rápida.
- Si la app predeterminada de pagos NFC admite la función y el parámetro de configuración
LOCKSCREEN_SHOW_WALLET
estrue
, se puede acceder a la Billetera de Acceso rápido en la pantalla de bloqueo. - Si la app de pago NFC predeterminada admite la función y si el parámetro de configuración
LOCKSCREEN_SHOW_WALLET
esfalse
, no se puede acceder a la Billetera de acceso rápido en la pantalla de bloqueo.
Estado cero
Si se habilita y exporta
QuickAccessWalletService
, pero no proporciona ninguna tarjeta, el mosaico del Tono aparece como se muestra en el ejemplo de la Figura 7. Si haces clic en la tarjeta, se abrirá la app de pagos NFC predeterminada.Figura 7: Ejemplo de tarjeta en la sombra que muestra la app predeterminada de pagos NFC.
Si haces clic en la vista de estado vacío, como se muestra en la Figura 8, se abre la app de pago NFC predeterminada. Esta vista de estado vacío se muestra solo cuando al usuario le queda una tarjeta en la billetera, la quita de la página de detalles de la tarjeta y, luego, vuelve a la vista de la billetera.
La pantalla de bloqueo muestra el ícono de la billetera.
Figura 8: Vista de estado vacío en la IU de Acceso rápido a la Billetera.
Estado distinto de cero
Si la app de la billetera proporciona una o más tarjetas, la tarjeta en la sombra aparece como se muestra en la Figura 9.
Figura 9: Ejemplo de tarjeta en el panel cuando la app de Billetera tiene una o más tarjetas.
Cuando se hace clic en el mosaico, se muestra un carrusel de tarjetas.
La pantalla de bloqueo muestra un botón que abre la Billetera de acceso rápido.
Figura 10: IU de la Billetera de acceso rápido con una tarjeta visible.
Si la tarjeta que se muestra representa una forma de pago NFC, si se coloca el teléfono sobre una terminal de pago NFC, se usará esa forma de pago y se descartará la vista de la billetera.
Si haces clic en una tarjeta que se muestra, se abrirá la actividad detallada de esa tarjeta.
Si
QuickAccessWalletService
proporciona varias tarjetas, el usuario puede deslizar el dedo entre ellas.El menú ampliado contiene una entrada: abrir la configuración de la pantalla de bloqueo para que el usuario pueda cambiar la opción Mostrar billetera.
Pruebas de estado de la cerradura
- Si el teléfono está bloqueado, la billetera se puede ver en el panel de configuración rápida, con la descripción Agregar una tarjeta si no existe ninguna tarjeta en la app de pagos predeterminada, o desbloquear para usar si existen tarjetas en la app de pagos predeterminada.
- Si el teléfono está bloqueado, la visibilidad de la billetera en la pantalla de bloqueo se controla mediante el parámetro de configuración
Secure.LOCKSCREEN_SHOW_WALLET
, que se controla en Configuración. - Si el teléfono está bloqueado,
LOCKSCREEN_SHOW_WALLET
esfalse
y no hay ninguna tarjeta en la app de pagos NFC predeterminada, la billetera no se muestra en la pantalla de bloqueo. - Si el teléfono está bloqueado,
LOCKSCREEN_SHOW_WALLET
estrue
y no hay ninguna tarjeta en la app de pagos NFC predeterminada, la billetera no se muestra en la pantalla de bloqueo. - Si el teléfono está bloqueado,
LOCKSCREEN_SHOW_WALLET
estrue
y existen tarjetas en la app predeterminada de pagos NFC, la billetera se muestra en la pantalla de bloqueo. - Si desbloqueas el teléfono mientras se muestra la billetera en la pantalla de bloqueo, se requerirán las tarjetas, lo que podría generar contenido diferente en ellas.
Pruebas de accesibilidad
- Los usuarios de TalkBack pueden navegar por la vista de la billetera deslizando el dedo hacia la izquierda y hacia la derecha, y escuchando las descripciones del contenido de las tarjetas.
- Si deslizas el dedo hacia la izquierda y la derecha con TalkBack habilitado, se selecciona cada tarjeta a su vez. Los usuarios de TalkBack pueden seleccionar y usar una forma de pago NFC en una terminal de pago NFC.
Pruebas manuales para Android 11
Para probar las funciones principales de la Billetera de acceso rápido, se requiere una terminal de pago NFC (real o falsa) y una app de pago NFC que implemente QuickAccessWalletService
(app de billetera). Las funciones principales que se deben probar incluyen la disponibilidad, el estado cero, la selección de tarjetas y el comportamiento de la pantalla de bloqueo.
Disponibilidad
- Si el parámetro de configuración
GLOBAL_ACTIONS_PANEL_ENABLED
estrue
y la app de pagos NFC predeterminada admite la función, se puede acceder a la Billetera de acceso rápido. - Si el parámetro de configuración
GLOBAL_ACTIONS_PANEL_ENABLED
esfalse
y la app predeterminada de pagos NFC admite la función, no se puede acceder a la Billetera de Acceso rápido. - Si el parámetro de configuración
GLOBAL_ACTIONS_PANEL_ENABLED
estrue
y la app de pago NFC predeterminada no admite la función, no se puede acceder a la Billetera de acceso rápido. - Si el parámetro de configuración
GLOBAL_ACTIONS_PANEL_ENABLED
esfalse
y la app de pago NFC predeterminada no admite la función, no se puede acceder a la Billetera de acceso rápido.
Sin estado
- Si se habilita y exporta
QuickAccessWalletService
, pero no proporciona ninguna tarjeta, la IU de la Billetera de Acceso rápido muestra la vista de estado vacía. Si haces clic en la vista de estado vacío, se abrirá la app de la billetera.
Estado distinto de cero
Si la app de la billetera proporciona una o más tarjetas, estas se muestran en la IU de la Billetera de acceso rápido.
Si la tarjeta que se muestra representa una forma de pago NFC, acercar el teléfono a una terminal de pagos NFC hará que se use esa forma de pago y se descartará la vista de billetera.
Si haces clic en una tarjeta que se muestra, se descartará la vista de la billetera y se abrirá la actividad detallada de esa tarjeta.
Si
QuickAccessWalletService
proporciona varias tarjetas, el usuario puede deslizar el dedo entre ellas.El menú ampliado contiene dos entradas: una que abre la app de la Billetera y otra que abre la pantalla Show cards &pass en Configuración.
Pruebas de estado de la cerradura
- Si el teléfono está bloqueado, la visibilidad de la billetera se controla mediante la configuración de
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT
, que se puede controlar en Configuración. - Si el teléfono está bloqueado y
POWER_MENU_LOCK_SHOW_CONTENT
esfalse
, no se muestra la billetera. - Si el teléfono está bloqueado y
POWER_MENU_LOCK_SHOW_CONTENT
estrue
, se muestra la billetera. - Si desbloqueas el teléfono mientras la billetera se muestra en la pantalla de bloqueo, se volverán a consultar las tarjetas, lo que podría generar contenido diferente.
Pruebas de accesibilidad
- Los usuarios de TalkBack pueden navegar por la vista de la billetera deslizando el dedo hacia la izquierda y hacia la derecha, y escuchando las descripciones del contenido de las tarjetas.
- Si deslizas el dedo hacia la izquierda y la derecha con TalkBack habilitado, se selecciona cada tarjeta a su vez. Los usuarios de TalkBack pueden seleccionar y usar una forma de pago NFC en una terminal de pago NFC.