Creare un riquadro Impostazioni rapide per il pagamento con codice QR

Le Impostazioni rapide sono riquadri visualizzati nel riquadro Impostazioni rapide. Gli utenti possono toccare questi riquadri per completare rapidamente le attività ricorrenti. Questo documento mostra come creare un riquadro Impostazioni rapide personalizzato per il codice QR pagamenti.

Prima di continuare, assicurati di acquisire familiarità con le istruzioni generali e le best practice pratiche per creare riquadri personalizzati delle Impostazioni rapide per la tua app.

Per creare il tuo riquadro, segui questi passaggi:

  1. Crea la tua icona personalizzata.
  2. Crea e dichiara il tuo TileService.

  3. Per avviare il pagamento tramite codice QR, compila il metodo onClick(). Toccando in modo lungo un riquadro mostra la schermata Info app per l'utente. Per ignorare questo comportamento e avviare invece un'attività per l'impostazione delle preferenze, aggiungere <intent-filter> a una delle tue attività 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. Per proteggere gli utenti dati di pagamento sensibili, esegui solo azioni sicure su dispositivi bloccati in modo sicuro.

    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. Quando introduci questa funzionalità per la prima volta, chiedi all'utente di aggiungere il tuo riquadro.