Criar um bloco "Configurações rápidas de pagamento com QR code"

As "Configurações rápidas" são blocos exibidos no painel "Configurações rápidas". Os usuários podem tocar nesses blocos para concluir rapidamente tarefas recorrentes. Este documento mostra como criar um bloco personalizado "Configurações rápidas" para QR code pagamentos.

Antes de continuar, conheça as instruções gerais e as práticas para criar blocos personalizados de Configurações rápidas para seu app.

Para criar um bloco, siga estas etapas:

  1. Crie seu ícone personalizado.
  2. Crie e declare o TileService.

  3. Para iniciar o pagamento com um QR code, preencha a forma de pagamento onClick(). Tocar e manter pressionado um bloco mostra a tela "App Info" do usuário. Para substituir esse comportamento e iniciar uma atividade para definir as preferências, adicione um <intent-filter> em uma das suas atividades com 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 a privacidade dos usuários, informações de pagamento confidenciais, realizem apenas ações seguras em dispositivos bloqueados com segurança.

    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. Ao introduzir este recurso pela primeira vez, solicite que o usuário adicione seu bloco de notas.