Cómo crear una tarjeta de Configuración rápida de pagos con código QR

La Configuración rápida son tarjetas que se muestran en el panel de Configuración rápida. Los usuarios pueden presionar estas tarjetas para completar tareas recurrentes con rapidez. En este documento, se muestra cómo crear un mosaico personalizado de Configuración rápida para código QR. pagos.

Antes de continuar, asegúrate de conocer las instrucciones generales prácticas para crear tarjetas de Configuración rápida personalizadas para tu app.

Para crear tu tarjeta, sigue estos pasos:

  1. Crea un ícono personalizado.
  2. Crea y declara tu TileService.

  3. Para iniciar el pago con código QR, completa el método onClick(). Mantén presionado una tarjeta solicita al usuario la pantalla Información de la app. Para anular este comportamiento, sigue estos pasos: y, en su lugar, inicia una actividad para configurar preferencias, agrega una <intent-filter> a una de tus actividades con ACTION_QS_TILE_PREFERENCES

    Kotlin

    import android.service.quicksettings.TileService
    
    // Called when the user taps on your tile in an active or inactive state.
    override fun onClick() {
       // Create Intent, replace MainActivity::class.java with QR Code Activity
       val intent = Intent(this, MainActivity::class.java)
       // Create PendingIntent
       val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)
       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
         startActivityAndCollapse(pendingIntent)
       } else {
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
         startActivityAndCollapse(intent)
       }
    }
    

    Java

    import android.service.quicksettings.TileService;
    
    // Called when the user taps on your tile in an active or inactive state.
    @Override
    public void onClick() {
     // Create Intent, replace MainActivity.class with QR Code Activity
     Intent intent = new Intent(MyQSTileService.this, MainActivity.class);
     // Create PendingIntent
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
     if (VERSION.SDK_INT >= VERSION_CODES.UPSIDE_DOWN_CAKE) {
       startActivityAndCollapse(pendingIntent);
     } else {
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivityAndCollapse(intent);
     }
    }
    
  4. Para proteger las contraseñas información de pago confidencial, solo realice acciones seguras en dispositivos bloqueados de forma segura.

    Kotlin

    import android.service.quicksettings.TileService
    
    override fun onClick() {
       val intent = Intent(this, MainActivity::class.java)
       val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)
    
       // ...
    
       if (isSecure()) {
           startActivityAndCollapse(pendingIntent)
       } else {
           unlockAndRun {
               startActivityAndCollapse(pendingIntent)
           }
       }
       // ...
    }
    

    Java

    import android.service.quicksettings.TileService;
    
    @Override
    public void onClick() {
     Intent intent = new Intent(MyQSTileService.this, MainActivity.class);
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
     ...
     if (isSecure()) {
       startActivityAndCollapse(pendingIntent);
     } else {
       unlockAndRun(new Runnable() {
         @Override
         public void run() {
           startActivityAndCollapse(pendingIntent);
         }
       });
      }
     ...
    }
    
  5. Cuando introduzcas esta función por primera vez, pídele al usuario que agregue tu mosaico.