Buat kartu Setelan Cepat Pembayaran Kode QR

Setelan Cepat adalah kartu yang ditampilkan di panel Setelan Cepat. Pengguna dapat mengetuk kotak ini untuk menyelesaikan tugas berulang dengan cepat. Dokumen ini menunjukkan cara membuat kartu Setelan Cepat kustom untuk pembayaran Kode QR.

Sebelum melanjutkan, pastikan Anda sudah memahami petunjuk umum dan praktik terbaik untuk membuat kartu Setelan Cepat kustom untuk aplikasi Anda.

Untuk membuat kartu, ikuti langkah-langkah berikut:

  1. Buat ikon khusus.
  2. Buat dan deklarasikan TileService.

  3. Untuk meluncurkan pembayaran Kode QR, isi metode onClick(). Mengetuk lama kartu akan meminta pengguna melihat layar Info Aplikasi. Untuk mengganti perilaku ini dan meluncurkan aktivitas untuk menyetel preferensi, tambahkan <intent-filter> ke salah satu aktivitas Anda dengan 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. Untuk melindungi informasi pembayaran sensitif pengguna, hanya lakukan tindakan yang aman di perangkat yang terkunci dengan aman.

    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. Saat pertama kali memperkenalkan fitur ini, minta pengguna untuk menambahkan kartu.