إنشاء مربّع الإعدادات السريعة للدفع من خلال رمز الاستجابة السريعة

الإعدادات السريعة هي أقسام يتم عرضها في لوحة الإعدادات السريعة. ويمكن للمستخدمين النقر على هذه المربّعات لإكمال المهام المتكرّرة بسرعة. يوضّح لك هذا المستند كيفية إنشاء مربّع مخصّص للإعدادات السريعة للدفعات التي تتم باستخدام رمز الاستجابة السريعة.

قبل المتابعة، تأكّد من الاطّلاع على التعليمات العامة وأفضل الممارسات لإنشاء مربّعات مخصّصة للإعدادات السريعة لتطبيقك.

لإنشاء مربّعك، اتّبِع الخطوات التالية:

  1. أنشئ رمزك المخصّص.
  2. إنشاء TileService والتصريح عنها.

  3. لبدء عملية الدفع باستخدام رمز الاستجابة السريعة، يُرجى ملء طريقة الدفع onClick(). يؤدي النقر المطوّل على أحد الأقسام إلى ظهور شاشة "معلومات التطبيق" للمستخدم. لإلغاء هذا السلوك وبدلاً من ذلك بدء نشاط لضبط الإعدادات المفضّلة، أضِف <intent-filter> إلى أحد أنشطتك باستخدام 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. لحماية معلومات الدفع الحساسة للمستخدمين، عليك تنفيذ إجراءات آمنة فقط على الأجهزة المقفلة بأمان.

    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. عند تقديم هذه الميزة لأول مرة، اطلب من المستخدم إضافة مربّعك.