Wallet को क्विक ऐक्सेस करने की सुविधा

Android 11 से उपलब्ध 'वॉलेट को तुरंत ऐक्सेस करें' सुविधा की मदद से, उपयोगकर्ता सीधे पावर मेन्यू से पेमेंट कार्ड और ज़रूरी पास ऐक्सेस कर सकता है. इसका इस्तेमाल कई कामों के लिए किया जा सकता है. जैसे, NFC टर्मिनल पर लेन-देन करने से पहले पेमेंट का सही तरीका चुनना और आने वाले इवेंट के लिए फ़्लाइट और अन्य पास को तुरंत ऐक्सेस करना.

Android 12 या इसके बाद के वर्शन में, क्विक ऐक्सेस वॉलेट की सुविधा, शेड में उपलब्ध होती है. इसे पहली और दूसरी इमेज में दिखाया गया है.

शेड में Wallet को फटाफट ऐक्सेस करने की सुविधा
पहली इमेज. वॉलेट को फटाफट ऐक्सेस करने की सुविधा (डिवाइस लॉक होने पर).
शेड में Wallet को फटाफट ऐक्सेस करने की सुविधा
दूसरी इमेज. डिवाइस अनलॉक होने पर, Wallet को फटाफट ऐक्सेस करने की सुविधा.

Android 11 में, यह सुविधा पावर मेन्यू में उपलब्ध है. इसे तीसरे फ़िगर में दिखाया गया है.

पावर मेन्यू में Wallet को फटाफट ऐक्सेस करने की सुविधा
तीसरी इमेज. पावर मेन्यू में, Wallet को फटाफट ऐक्सेस करने की सुविधा.

ज़रूरी शर्तें

Wallet को तुरंत ऐक्सेस करने की सुविधा का इस्तेमाल करने के लिए, आपके डिवाइस में एनएफ़सी की सुविधा होनी चाहिए. यह सुविधा, एनएफ़सी की मदद से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन के QuickAccessWalletService से जुड़ी होती है. इसका मतलब है कि डिवाइस में एनएफ़सी की सुविधा के साथ-साथ, होस्ट-बेस्ड कार्ड इम्यूलेशन (एचसीई) की सुविधा भी होनी चाहिए.

सुविधाओं के बारे में खास जानकारी

वॉलेट को फटाफट ऐक्सेस करने की सुविधा के दो हिस्से होते हैं: वॉलेट को फटाफट ऐक्सेस करने की सुविधा का यूज़र इंटरफ़ेस (यूआई) और वॉलेट को फटाफट ऐक्सेस करने की सुविधा देने वाली कंपनी.

Android 12 या इसके बाद के वर्शन में, Wallet का यूज़र इंटरफ़ेस (यूआई) SystemUI में काम करता है और frameworks/base/packages/SystemUI/src/com/android/systemui/wallet में मौजूद होता है. Android 11 में, Wallet यूज़र इंटरफ़ेस (यूआई) को इंस्टॉल और श्वेतसूची में शामिल किया जाना चाहिए. यह platform/packages/apps/QuickAccessWallet में मौजूद होता है.

क्विक ऐक्सेस वॉलेट कार्ड की सुविधा देने वाला ऐप्लिकेशन, एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन होता है. उपयोगकर्ताओं के पास, एनएफ़सी पेमेंट के लिए एक साथ कई ऐप्लिकेशन इंस्टॉल करने का विकल्प होता है. हालांकि, सिर्फ़ डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, पावर मेन्यू में कार्ड दिखा सकता है. यह तय किया जा सकता है कि शुरुआत में, NFC पेमेंट के लिए कौनसा ऐप्लिकेशन डिफ़ॉल्ट के तौर पर सेट किया जाए. हालांकि, उपयोगकर्ता सेटिंग में जाकर कोई दूसरा ऐप्लिकेशन चुन सकते हैं. अगर सिर्फ़ एक NFC पेमेंट ऐप्लिकेशन इंस्टॉल किया गया है, तो वह अपने-आप डिफ़ॉल्ट ऐप्लिकेशन बन जाता है (CardEmulationManager देखें).

लागू करना

क्विक ऐक्सेस Wallet के यूज़र इंटरफ़ेस (यूआई) में कार्ड दिखाने के लिए, एनएफ़सी पेमेंट ऐप्लिकेशन को QuickAccessWalletService लागू करना होगा. पेमेंट ऐप्लिकेशन में, सेवा का विज्ञापन करने वाली मेनिफ़ेस्ट एंट्री शामिल होनी चाहिए.

यह पक्का करने के लिए कि सिर्फ़ सिस्टम यूज़र इंटरफ़ेस QuickAccessWalletService से जुड़ सके, NFC पेमेंट ऐप्लिकेशन के लिए QuickAccessWalletService की अनुमति लेना ज़रूरी है.android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE इस अनुमति की ज़रूरत इसलिए होती है, ताकि सिर्फ़ सिस्टम यूज़र इंटरफ़ेस (यूआई) QuickAccessWalletService से जुड़ सके.

<service
     android:name=".MyQuickAccessWalletService"
     android:label="@string/my_default_tile_label"
     android:icon="@drawable/my_default_icon_label"
     android:logo="@drawable/my_wallet_logo"
     android:permission="android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE">
     <intent-filter>
         <action android:name="android.service.quickaccesswallet.QuickAccessWalletService" />
         <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
     <meta-data android:name="android.quickaccesswallet"
          android:resource="@xml/quickaccesswallet_configuration" />
     <meta-data
          android:name="android.quickaccesswallet.tile"
          android:resource="@drawable/my_default_tile_icon"/>
</service>

वॉलेट के बारे में ज़्यादा जानकारी, लिंक की गई एक्सएमएल फ़ाइल में शामिल है:

<quickaccesswallet-service
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:settingsActivity="com.example.android.SettingsActivity"
   android:shortcutLongLabel="@string/my_wallet_empty_state_text"
   android:shortcutShortLabel="@string/my_wallet_button_text"
   android:targetActivity="com.example.android.WalletActivity"/>

इसके बाद, पेमेंट ऐप्लिकेशन को QuickAccessWalletService लागू करना होगा:

public class MyQuickAccessWalletService extends QuickAccessWalletService {

    @Override
    public void onWalletCardsRequested(
            GetWalletCardsRequest request,
            GetWalletCardsCallback callback) {
        GetWalletCardsResponse response = // generate response
        callback.onSuccess(response);
    }

    @Override
    public void onWalletCardSelected(SelectWalletCardRequest request) {
        // selecting a card should ensure that it is used when making an NFC payment
    }

    @Override
    public void onWalletDismissed() {
        // May un-select card if the wallet app has the concept of a 'default'
        // payment method
    }
}

अगर HostApduService, एनएफ़सी लेन-देन को मैनेज करना शुरू करता है और इसके बाद, पेमेंट की प्रोसेस और नतीजे को दिखाने के लिए कोई गतिविधि शुरू करता है, तो उसे बाउंड QuickAccessWalletService का रेफ़रंस भी पाना चाहिए. साथ ही, QuickAccessWalletService#sendEvent को TYPE_NFC_PAYMENT_STARTED इवेंट टाइप के साथ कॉल करना चाहिए. इससे, Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) बंद हो जाता है. इसलिए, उपयोगकर्ता को पेमेंट की गतिविधि बिना किसी रुकावट के दिखती है.

QuickAccessWalletService को लागू करने के बारे में ज़्यादा जानकारी के लिए, QuickAccessWalletService और TestQuickAccessWalletService सीटीएस टेस्ट देखें.

Android 11 में, Wallet को झटपट ऐक्सेस करने की सुविधा वाला यूज़र इंटरफ़ेस (यूआई) चालू करना

Android 11 में, पावर मेन्यू से Quick Access Wallet को ऐक्सेस करने की सुविधा कॉन्फ़िगर करने के लिए, बिल्ड में QuickAccessWallet टारगेट शामिल करें. साथ ही, globalactions.wallet प्लगिन चालू करें. इसके लिए, नीचे दिए गए कोड सैंपल में बोल्ड की गई लाइन को overlay/frameworks/base/packages/SystemUI/res/values/config.xml फ़ाइल में जोड़ें.

<resources>
    ...
    <!-- SystemUI Plugins that can be loaded on user builds. -->
    <string-array name="config_pluginWhitelist" translatable="false">
        <item>com.android.systemui</item>
        <item>com.android.systemui.plugin.globalactions.wallet</item>
    </string-array>
</resources>

def_nfc_payment_component का इस्तेमाल करके, सेटिंग कॉन्फ़िगरेशन फ़ाइल में, एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन तय करें.

डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन को QuickAccessWalletService को दिखाना होगा, ताकि Quick Access Wallet को कार्ड उपलब्ध कराए जा सकें. अगर एनएफ़सी से पेमेंट करने वाला डिफ़ॉल्ट ऐप्लिकेशन, इस सेवा को एक्सपोर्ट नहीं करता है, तो Wallet का यूज़र इंटरफ़ेस (यूआई) छिपा दिया जाता है.

QuickAccessWalletService लागू करने से जुड़ी जानकारी

QuickAccessWalletService में तीन अब्सट्रैक्ट तरीके होते हैं जिन्हें लागू करना ज़रूरी है: onWalletCardsRequested, onWalletCardSelected, और onWalletDismissed. यहां दिए गए सीक्वेंस डायग्राम में, कॉल सीक्वेंस के बारे में बताया गया है. यह तब होता है, जब एनएफ़सी पेमेंट से ठीक पहले, क्विक ऐक्सेस वॉलेट देखा जाता है.

Wallet को फटाफट ऐक्सेस करने की सुविधा का क्रमवार डायग्राम

क्विक ऐक्सेस वॉलेट देखने पर कॉल सीक्वेंस का उदाहरण
चौथी इमेज. क्विक ऐक्सेस वॉलेट देखने पर कॉल सीक्वेंस का उदाहरण.

क्विक ऐक्सेस वॉलेट को देखने के बाद, हर बार एनएफ़सी पेमेंट नहीं किया जाता. हालांकि, ऊपर दिए गए चौथे डायग्राम में QuickAccessWalletService की सभी सुविधाओं के बारे में बताया गया है. इस उदाहरण में, Quick Access Wallet कार्ड की सुविधा देने वाली कंपनी ने नीले रंग में हाइलाइट किए गए एलिमेंट लागू किए हैं. यह माना जाता है कि पेमेंट कार्ड की जानकारी, डिवाइस पर डेटाबेस में सेव की जाती है. इसे PaymentCardManager नाम के इंटरफ़ेस से ऐक्सेस किया जाता है. यह भी माना जाता है कि PaymentActivity नाम की गतिविधि, एनएफ़सी पेमेंट का नतीजा दिखाती है. यह फ़्लो इस तरह आगे बढ़ता है:

  1. उपयोगकर्ता, Quick Access Wallet को खोलने के लिए कोई जेस्चर करता है.
  2. Quick Access Wallet UI (सिस्टम यूआई का हिस्सा) पैकेज मैनेजर की जांच करता है. इससे यह पता चलता है कि डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, QuickAccessWalletService एक्सपोर्ट करता है या नहीं.

    • अगर सेवा एक्सपोर्ट नहीं की जाती है, तो Quick Access Wallet नहीं दिखता है.
  3. Wallet को फटाफट ऐक्सेस करने की सुविधा वाला यूज़र इंटरफ़ेस (यूआई), QuickAccessWalletService से जुड़ता है और onWalletCardsRequested को कॉल करता है. इस तरीके में, अनुरोध ऑब्जेक्ट और कॉलबैक का इस्तेमाल किया जाता है. अनुरोध ऑब्जेक्ट में, कार्ड की संख्या और साइज़ के बारे में डेटा होता है. कॉलबैक को बैकग्राउंड थ्रेड से कॉल किया जा सकता है.

  4. QuickAccessWalletService उन कार्ड का हिसाब लगाता है जिन्हें उसे दिखाना है. इसके बाद, दिए गए कॉलबैक पर onSuccess वाले तरीके को कॉल करता है. हमारा सुझाव है कि सेवा, बैकग्राउंड थ्रेड पर ये कार्रवाइयां करे.

  5. कार्ड दिखते ही, सिस्टम यूज़र इंटरफ़ेस (यूआई), QuickAccessWalletService को सूचना देता है कि पहले कार्ड को onWalletCardSelected को कॉल करके चुना गया है.

    • onWalletCardSelected को तब कॉल किया जाता है, जब उपयोगकर्ता कोई नया कार्ड चुनता है.
    • onWalletCardSelected को तब भी कॉल किया जा सकता है, जब फ़िलहाल चुना गया कार्ड न बदला हो.
  6. जब उपयोगकर्ता, Wallet को क्विक ऐक्सेस करने की सुविधा को खारिज करता है, तो सिस्टम यूज़र इंटरफ़ेस (यूआई), onWalletDismissed को कॉल करके QuickAccessWalletService को सूचना देता है.

ऊपर दिए गए उदाहरण में, उपयोगकर्ता ने फ़ोन को एनएफ़सी पेमेंट टर्मिनल की रेंज में रखा है. इस दौरान, Wallet दिख रहा है. एनएफ़सी पेमेंट को हैंडल करने के लिए, HostApduService एक अहम कॉम्पोनेंट है. एनएफ़सी रीडर से मिले APDU को प्रोसेस करने के लिए, इसे लागू करना ज़रूरी है. ज़्यादा जानकारी के लिए, होस्ट-आधारित कार्ड इम्यूलेशन देखें. यह माना जाता है कि पेमेंट ऐप्लिकेशन, एनएफ़सी टर्मिनल के साथ इंटरैक्शन की प्रोग्रेस और नतीजे को दिखाने के लिए कोई गतिविधि शुरू करता है. हालांकि, Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई), ऐप्लिकेशन विंडो के सबसे ऊपर दिखता है. इसका मतलब है कि पेमेंट से जुड़ी गतिविधि, Quick Access Wallet के यूज़र इंटरफ़ेस (यूआई) से छिप जाती है. इस समस्या को ठीक करने के लिए, ऐप्लिकेशन को सिस्टम यूज़र इंटरफ़ेस (यूआई) को यह सूचना देनी होगी कि क्विक ऐक्सेस वॉलेट यूज़र इंटरफ़ेस (यूआई) को बंद कर दिया जाना चाहिए. इसके लिए, बाउंड QuickAccessWalletService का रेफ़रंस पाना होगा. साथ ही, इवेंट टाइप TYPE_NFC_PAYMENT_STARTED के साथ sendWalletServiceEvent को कॉल करना होगा.

QuickAccessWalletService को लागू करने का सैंपल

/** Sample implementation of {@link QuickAccessWalletService} */
@RequiresApi(VERSION_CODES.R)
public class MyQuickAccessWalletService extends QuickAccessWalletService {

  private static final String TAG = "QAWalletSvc";
  private ExecutorService executor;
  private PaymentCardManager paymentCardManager;

  @Override
  public void onCreate() {
    super.onCreate();
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      Log.w(TAG, "Should not run on pre-R devices");
      stopSelf();
      return;
    }
    executor = Executors.newSingleThreadExecutor();
    paymentCardManager = new PaymentCardManager();
  }

  @Override
  public void onDestroy() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.shutdownNow();
  }

  @Override
  public void onWalletCardsRequested(
      @NonNull GetWalletCardsRequest request, @NonNull GetWalletCardsCallback callback) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> {
          List<PaymentCard> paymentCards = paymentCardManager.getCards();
          int maxCards = Math.min(paymentCards.size(), request.getMaxCards());
          List<WalletCard> walletCards = new ArrayList<>(maxCards);
          int selectedIndex = 0;
          int cardWidthPx = request.getCardWidthPx();
          int cardHeightPx = request.getCardHeightPx();
          for (int index = 0; index < maxCards; index++) {
            PaymentCard paymentCard = paymentCards.get(index);
            WalletCard walletCard =
                new WalletCard.Builder(
                        paymentCard.getCardId(),
                        paymentCard.getCardImage(cardWidthPx, cardHeightPx),
                        paymentCard.getContentDescription(),
                        paymentCard.getPendingIntent())
                    .build();
            walletCards.add(walletCard);
            if (paymentCard.isSelected()) {
              selectedIndex = index;
            }
          }
          GetWalletCardsResponse response =
              new GetWalletCardsResponse(walletCards, selectedIndex);
          callback.onSuccess(response);
        });
  }

  @Override
  public void onWalletCardSelected(@NonNull SelectWalletCardRequest request) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> paymentCardManager.selectCardById(request.getCardId()));
  }

  @Override
  public void onWalletDismissed() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(() -> {
      paymentCardManager.removeCardOverrides();
    });
  }
}

QuickAccessWalletService के बारे में ज़्यादा जानने के लिए, QuickAccessWalletService एपीआई के बारे में जानकारी देखें.

अनुमतियां

QuickAccessWalletService के लिए मेनिफ़ेस्ट एंट्री में, Android 11 में पेश की गई android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE अनुमति की ज़रूरत होनी चाहिए. यह हस्ताक्षर के लेवल की अनुमति है, जो System UI के पास होती है. इसका मतलब है कि सिर्फ़ System UI प्रोसेस, QuickAccessWalletService के लागू होने से जुड़ सकती है. ध्यान दें कि साइडलोड किए गए ऐप्लिकेशन, इस अनुमति का दावा कर सकते हैं. साथ ही, Android 10 या इससे पहले के वर्शन वाले डिवाइसों पर QuickAccessWalletService के डेटा का पूरा ऐक्सेस पा सकते हैं. ऐसा होने से रोकने के लिए, हमारा सुझाव है कि सेवा onCreate में बिल्ड वर्शन की जांच करे. साथ ही, सेवा को सिर्फ़ Android 11 और उसके बाद के वर्शन वाले डिवाइसों पर चालू करे. होस्ट कार्ड इम्यूलेशन पेमेंट की सेवाएं देने के लिए, ज़रूरी अनुमतियों के अलावा किसी अन्य ऐप्लिकेशन की अनुमति की ज़रूरत नहीं होती.

अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, QuickAccessWalletService को लागू या एक्सपोर्ट नहीं करता है, तो Wallet का क्विक ऐक्सेस यूज़र इंटरफ़ेस (यूआई) नहीं दिखता है.

Android 12 में सेटिंग

लॉक स्क्रीन से Wallet को तुरंत ऐक्सेस करने की सुविधा को चालू या बंद करने के लिए, उपयोगकर्ता सेटिंग > डिस्प्ले > लॉक स्क्रीन में जाकर, वॉलेट दिखाएं टॉगल का इस्तेमाल कर सकते हैं. शेड में मौजूद वॉलेट को बंद करने के लिए, उपयोगकर्ताओं को फटाफट सेटिंग वाले शेड में जाकर, इसे मैन्युअल तरीके से बदलना होगा.

लॉक स्क्रीन से वॉलेट ऐक्सेस करने की सुविधा चालू या बंद करने के लिए, टॉगल करें

पांचवीं इमेज. सेटिंग में जाकर, लॉक स्क्रीन पेज पर वॉलेट टॉगल दिखाएं.

Android 11 में सेटिंग

उपयोगकर्ता, सेटिंग ऐप्लिकेशन में जाकर, 'वॉलेट को तुरंत ऐक्सेस करें' सुविधा बंद कर सकते हैं. सेटिंग पेज यहां दिया गया है: सेटिंग > सिस्टम > हाथ के जेस्चर > कार्ड और पास.

Wallet को फटाफट ऐक्सेस करने की सुविधा को चालू या बंद करने के लिए सेटिंग पेज
छठी इमेज. Wallet को फटाफट ऐक्सेस करने की सुविधा को चालू या बंद करने के लिए, सेटिंग पेज.

पसंद के मुताबिक बनाएं

सिस्टम यूज़र इंटरफ़ेस (यूआई) में किसी दूसरी जगह पर, Wallet को झटपट ऐक्सेस करने की सुविधा जोड़ना

वॉलेट के यूज़र इंटरफ़ेस (यूआई) को तुरंत ऐक्सेस करने की सुविधा को सिस्टम प्लगिन के तौर पर बनाया गया है. AOSP में इस सुविधा का इस्तेमाल GlobalActionsDialog में किया जाता है (पावर बटन को देर तक दबाकर रखने पर दिखता है). हालांकि, इस सुविधा को किसी दूसरे जेस्चर के पीछे ले जाया जा सकता है. इसके लिए, आपको प्लग-इन इंटरफ़ेस में बताए गए कानूनी समझौते का पालन करना होगा.

public interface GlobalActionsPanelPlugin extends Plugin {

  /** Invoked when the view is shown */
  PanelViewController onPanelShown(Callbacks callbacks, boolean deviceLocked);

  /** Callbacks for interacting with the view container */
  interface Callbacks {
    /** Dismisses the view */
    void dismissGlobalActionsMenu();

    /** Starts a PendingIntent, dismissing the keyguard if necessary. */
    void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent);
  }

  /** Provides the Quick Access Wallet view */
  interface PanelViewController {

    /** Returns the QuickAccessWallet view, which may take any size */
    View getPanelContent();

    /** Invoked when the view is dismissed */
    void onDismissed();

    /** Invoked when the device is either locked or unlocked. */
    void onDeviceLockStateChanged(boolean locked);
  }
}

वॉलेट को फटाफट ऐक्सेस करने की सुविधा के यूज़र इंटरफ़ेस (यूआई) में GlobalActionsPanelPlugin और PanelViewController लागू किए जाते हैं. GlobalActionsDialog, com.android.systemui.Dependency का इस्तेमाल करके Wallet प्लगिन का इंस्टेंस पाता है:

GlobalActionsPanelPlugin mPanelPlugin =
    Dependency.get(ExtensionController.class)
        .newExtension(GlobalActionsPanelPlugin.class)
        .withPlugin(GlobalActionsPanelPlugin.class)
        .build()
        .get();

यह जांच करने के बाद कि प्लगिन शून्य नहीं है और PanelViewController returned by onPanelShown शून्य नहीं है, डायलॉग, getPanelContent से मिले View को अपने View से जोड़ता है. साथ ही, सिस्टम इवेंट के लिए सही कॉलबैक उपलब्ध कराता है.

// Construct a Wallet PanelViewController.
// `this` implements GlobalActionsPanelPlugin.Callbacks
GlobalActionsPanelPlugin.PanelViewController mPanelController =
    mPanelPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());

// Attach the view
FrameLayout panelContainer = findViewById(R.id.my_panel_container);
FrameLayout.LayoutParams panelParams =
    new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.MATCH_PARENT,
        FrameLayout.LayoutParams.MATCH_PARENT);
panelContainer.addView(mPanelController.getPanelContent(), panelParams);

// Respond to unlock events (if the view can be accessed while the phone is locked)
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
  @Override
  public void onUnlockedChanged() {
    boolean unlocked = keyguardStateController.isUnlocked()
        || keyguardStateController.canDismissLockScreen();
    mPanelController.onDeviceLockStateChanged(unlocked);
  }
});

// Implement GlobalActionsPanelPlugin.Callbacks
@Override
public void dismissGlobalActionsMenu() {
  dismissDialog();
}
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
  mActivityStarter.startPendingIntentDismissingKeyguard(pendingIntent);
}

// Notify the wallet when the container view is dismissed
mPanelController.onDismissed();

पावर मेन्यू से Quick Access Wallet को हटाने के लिए, सिस्टम बिल्ड से QuickAccessWallet टारगेट हटाएं. पावर मेन्यू से Quick Access Wallet को हटाने के लिए, लेकिन इसे सिस्टम यूज़र इंटरफ़ेस (यूआई) के किसी दूसरे व्यू में जोड़ने के लिए, बिल्ड टारगेट शामिल करें और GlobalActionsPanelPlugin से GlobalActionsImpl के रेफ़रंस हटाएं.

डिफ़ॉल्ट कॉन्फ़िगरेशन सेट करना

Android 12

Android 12 या इसके बाद के वर्शन में, Quick Access Wallet हमेशा क्विक सेटिंग शेड में दिखता है. लॉक स्क्रीन पर Quick Access Wallet के दिखने की सुविधा, इस सुरक्षित सेटिंग के तहत आती है: LOCKSCREEN_SHOW_WALLET. इस सेटिंग से यह कंट्रोल किया जाता है कि लॉक स्क्रीन पर सबसे नीचे दाईं ओर, Quick Access Wallet का आइकॉन दिखेगा या नहीं. यह सेटिंग डिफ़ॉल्ट रूप से true पर सेट होती है. हालांकि, उपयोगकर्ता इसे सेटिंग > डिसप्ले > लॉक स्क्रीन > वॉलेट दिखाएं में जाकर बंद कर सकता है.

Android 11

Android 11 में, Quick Access Wallet की सुविधा को दो सुरक्षित सेटिंग के ज़रिए कंट्रोल किया जाता है: GLOBAL_ACTIONS_PANEL_ENABLED और GLOBAL_ACTIONS_PANEL_AVAILABLE. AVAILABLE सेटिंग से यह कंट्रोल किया जाता है कि सेटिंग में जाकर, इस सुविधा को चालू और बंद किया जा सकता है या नहीं. इस सेटिंग को WalletPluginService ने true पर सेट किया है. अगर QuickAccessWallet को बिल्ड में शामिल नहीं किया जाता है, तो सेटिंग false पर बनी रहती है. ENABLED सेटिंग, उसी जगह पर डिफ़ॉल्ट रूप से true पर सेट होती है. हालांकि, उपयोगकर्ता इसे सेटिंग में जाकर बंद कर सकता है. डिफ़ॉल्ट तरीके को बदलने के लिए, WalletPluginService#enableFeatureInSettings में बदलाव करें.

Validation

Quick Access Wallet की सुविधा को लागू करने की पुष्टि करने के लिए, सीटीएस और मैन्युअल टेस्ट चलाएं. प्लगिन में किए गए बदलावों के लिए, शामिल किए गए Robolectric टेस्ट भी किए जाने चाहिए.

सीटीएस टेस्ट

cts/tests/quickaccesswallet पर मौजूद सीटीएस टेस्ट चलाएं.

Android 12 के लिए मैन्युअल टेस्ट

क्विक ऐक्सेस वॉलेट की मुख्य सुविधाओं को टेस्ट करने के लिए, एनएफ़सी पेमेंट टर्मिनल (असली या नकली) और एनएफ़सी पेमेंट ऐप्लिकेशन की ज़रूरत होती है. साथ ही, QuickAccessWalletService (वॉलेट ऐप्लिकेशन) को लागू करने वाले एनएफ़सी पेमेंट ऐप्लिकेशन की भी ज़रूरत होती है. इन मुख्य सुविधाओं की जांच करना ज़रूरी है: उपलब्धता, ज़ीरो स्टेट, कार्ड चुनना, और लॉक स्क्रीन का व्यवहार.

उपलब्धता

  • अगर एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन में यह सुविधा काम नहीं करती है, तो क्विक ऐक्सेस वॉलेट को न तो क्विक सेटिंग में और न ही लॉक स्क्रीन पर ऐक्सेस किया जा सकता है.
  • अगर एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन में यह सुविधा काम करती है, तो क्विक सेटिंग शेड में जाकर Quick Access Wallet को ऐक्सेस किया जा सकता है.
  • अगर एनएफ़सी की मदद से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन में यह सुविधा काम करती है और LOCKSCREEN_SHOW_WALLET सेटिंग true पर सेट है, तो लॉक स्क्रीन पर Quick Access Wallet को ऐक्सेस किया जा सकता है.
  • अगर एनएफ़सी की मदद से पेमेंट करने वाला डिफ़ॉल्ट ऐप्लिकेशन इस सुविधा के साथ काम करता है और LOCKSCREEN_SHOW_WALLET सेटिंग false पर सेट है, तो लॉक स्क्रीन पर Quick Access Wallet को ऐक्सेस नहीं किया जा सकता.

ज़ीरो स्टेट

  • अगर QuickAccessWalletService चालू है और एक्सपोर्ट किया गया है, लेकिन इससे कोई कार्ड नहीं मिलता है, तो शेड में मौजूद टाइल, सातवीं इमेज में दिए गए उदाहरण की तरह दिखेगी. टाइल पर क्लिक करने से, एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन खुल जाता है.

    शेड में मौजूद टाइल का उदाहरण, जिसमें एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन दिखाया गया है

    सातवीं इमेज. शेड में मौजूद टाइल का उदाहरण, जिसमें एनएफ़सी पेमेंट के डिफ़ॉल्ट ऐप्लिकेशन को दिखाया गया है.

  • आठवीं इमेज में दिखाए गए खाली स्टेट व्यू पर क्लिक करने से, एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन खुल जाता है. यह खाली स्टेट व्यू सिर्फ़ तब दिखता है, जब उपयोगकर्ता के पास वॉलेट में एक कार्ड बचा हो, वह कार्ड की जानकारी वाले पेज से कार्ड हटा दे, और फिर वॉलेट व्यू पर वापस चला जाए.

  • लॉक स्क्रीन पर, Wallet आइकॉन दिखता है.

Wallet को फटाफट ऐक्सेस करने की सुविधा में, खाली स्थिति की जानकारी देने वाला व्यू

आठवीं इमेज. Wallet को झटपट ऐक्सेस करने की सुविधा के यूज़र इंटरफ़ेस (यूआई) में, खाली स्थिति की जानकारी देने वाला व्यू.

शून्य से अलग स्थिति

  • अगर Wallet ऐप्लिकेशन एक या उससे ज़्यादा कार्ड उपलब्ध कराता है, तो शेड में मौजूद टाइल, इमेज 9 में दिखाए गए तरीके से दिखेगी.

    वॉलेट ऐप्लिकेशन में एक या उससे ज़्यादा कार्ड होने पर, शेड में मौजूद टाइल का उदाहरण

    नौवीं इमेज. वॉलेट ऐप्लिकेशन में एक या उससे ज़्यादा कार्ड होने पर, शेड में मौजूद टाइल का उदाहरण.

  • टाइल पर क्लिक करने से, कार्ड कैरसेल दिखता है.

  • लॉक स्क्रीन पर एक बटन दिखता है. इससे Wallet को फटाफट ऐक्सेस किया जा सकता है.

    कार्ड के साथ, Wallet को फटाफट ऐक्सेस करने की सुविधा का यूज़र इंटरफ़ेस (यूआई)

    दसवीं इमेज. Wallet को फटाफट ऐक्सेस करने की सुविधा का यूज़र इंटरफ़ेस (यूआई), जिसमें कार्ड दिख रहा है.

  • अगर दिखाया गया कार्ड, एनएफ़सी पेमेंट के तरीके को दिखाता है, तो फ़ोन को एनएफ़सी पेमेंट टर्मिनल के सामने रखने पर, पेमेंट के उस तरीके का इस्तेमाल किया जाता है. साथ ही, वॉलेट व्यू बंद हो जाता है.

  • दिखाए गए किसी कार्ड पर क्लिक करने से, उस कार्ड से जुड़ी गतिविधि की ज़्यादा जानकारी खुल जाती है.

  • अगर QuickAccessWalletService ने एक से ज़्यादा कार्ड उपलब्ध कराए हैं, तो उपयोगकर्ता एक कार्ड से दूसरे कार्ड पर स्वाइप कर सकता है.

  • ओवरफ़्लो मेन्यू में एक एंट्री होती है: लॉक स्क्रीन की सेटिंग खोलें, ताकि उपयोगकर्ता वॉलेट दिखाएं विकल्प को बदल सके.

लॉक की स्थिति से जुड़े टेस्ट

  • अगर फ़ोन लॉक है, तो Wallet, क्विक सेटिंग शेड पर दिखता है. अगर डिफ़ॉल्ट पेमेंट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो कार्ड जोड़ें का ब्यौरा दिखता है. अगर डिफ़ॉल्ट पेमेंट ऐप्लिकेशन में कार्ड मौजूद हैं, तो इस्तेमाल करने के लिए अनलॉक करें का ब्यौरा दिखता है.
  • अगर फ़ोन लॉक है, तो लॉक स्क्रीन पर Wallet दिखने की सुविधा को Secure.LOCKSCREEN_SHOW_WALLET सेटिंग से कंट्रोल किया जाता है. इस सेटिंग को सेटिंग में जाकर कंट्रोल किया जा सकता है.
  • अगर फ़ोन लॉक है, LOCKSCREEN_SHOW_WALLET false है, और एनएफ़सी से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो लॉक स्क्रीन पर Wallet नहीं दिखेगा.
  • अगर फ़ोन लॉक है, LOCKSCREEN_SHOW_WALLET true है, और एनएफ़सी से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो लॉक स्क्रीन पर Wallet नहीं दिखेगा.
  • अगर फ़ोन लॉक है, तो LOCKSCREEN_SHOW_WALLET true होता है. साथ ही, अगर एनएफ़सी की मदद से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन में कार्ड मौजूद हैं, तो लॉक स्क्रीन पर Wallet दिखता है.
  • लॉक स्क्रीन पर वॉलेट दिखते समय फ़ोन को अनलॉक करने पर, कार्ड की फिर से क्वेरी की जाती है. इससे कार्ड का कॉन्टेंट अलग-अलग हो सकता है.

सुलभता से जुड़ी जांच

  • Talkback का इस्तेमाल करने वाले लोग, वॉलेट व्यू में बाईं और दाईं ओर स्वाइप करके नेविगेट कर सकते हैं. इसके अलावा, वे कार्ड के कॉन्टेंट के बारे में जानकारी सुनकर भी नेविगेट कर सकते हैं.
  • TalkBack चालू होने पर, बाईं और दाईं ओर स्वाइप करने से, हर कार्ड बारी-बारी से चुना जाता है. TalkBack का इस्तेमाल करने वाले लोग, एनएफ़सी पेमेंट टर्मिनल पर एनएफ़सी पेमेंट का तरीका चुनकर इस्तेमाल कर सकते हैं.

Android 11 के लिए मैन्युअल टेस्ट

क्विक ऐक्सेस वॉलेट की मुख्य सुविधाओं को टेस्ट करने के लिए, एनएफ़सी पेमेंट टर्मिनल (असली या नकली) और एनएफ़सी पेमेंट ऐप्लिकेशन की ज़रूरत होती है. साथ ही, QuickAccessWalletService (वॉलेट ऐप्लिकेशन) को लागू करने वाले एनएफ़सी पेमेंट ऐप्लिकेशन की भी ज़रूरत होती है. मुख्य सुविधाओं की जांच करना ज़रूरी है. इनमें उपलब्धता, ज़ीरो स्टेट, कार्ड चुनना, और लॉक स्क्रीन का व्यवहार शामिल है.

उपलब्धता

  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग true पर सेट है और एनएफ़सी की सुविधा वाला डिफ़ॉल्ट पेमेंट ऐप्लिकेशन इस सुविधा के साथ काम करता है, तो Wallet को झटपट ऐक्सेस किया जा सकता है.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग false पर सेट है और एनएफ़सी की मदद से पेमेंट करने वाले डिफ़ॉल्ट ऐप्लिकेशन में यह सुविधा काम करती है, तो क्विक ऐक्सेस वॉलेट एक्सेस नहीं किया जा सकता.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग true पर सेट है और एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन, इस सुविधा के साथ काम नहीं करता है, तो क्विक ऐक्सेस वॉलेट को ऐक्सेस नहीं किया जा सकता है.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग false पर सेट है और एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन, इस सुविधा के साथ काम नहीं करता है, तो क्विक ऐक्सेस वॉलेट को ऐक्सेस नहीं किया जा सकता है.

ज़ीरो स्टेट

  • अगर QuickAccessWalletService चालू है और एक्सपोर्ट किया गया है, लेकिन कोई कार्ड नहीं दिखाता है, तो Wallet के क्विक ऐक्सेस यूज़र इंटरफ़ेस (यूआई) में, खाली जगह वाला व्यू दिखता है.
  • खाली जगह पर क्लिक करने से, Wallet ऐप्लिकेशन खुल जाता है.

    Wallet को झटपट ऐक्सेस करने की सुविधा के यूज़र इंटरफ़ेस (यूआई) में, खाली स्थिति की जानकारी देने वाली इमेज
    इमेज 11. क्विक ऐक्सेस वाले Wallet के यूज़र इंटरफ़ेस (यूआई) में, खाली स्थिति की जानकारी देने वाला व्यू.

शून्य से अलग स्थिति

  • अगर Wallet ऐप्लिकेशन एक या उससे ज़्यादा कार्ड उपलब्ध कराता है, तो कार्ड, Wallet को फटाफट ऐक्सेस करने की सुविधा वाले यूज़र इंटरफ़ेस (यूआई) में दिखते हैं.

    कार्ड के साथ, Wallet को फटाफट ऐक्सेस करने की सुविधा का यूज़र इंटरफ़ेस (यूआई)
    इमेज 12. कार्ड के साथ Wallet का क्विक ऐक्सेस यूज़र इंटरफ़ेस (यूआई) दिखाया गया है.
  • अगर दिखाया गया कार्ड, एनएफ़सी पेमेंट के तरीके को दिखाता है, तो फ़ोन को एनएफ़सी पेमेंट टर्मिनल के सामने रखने पर, पेमेंट के उस तरीके का इस्तेमाल किया जाता है. साथ ही, वॉलेट व्यू बंद हो जाता है.

  • दिखाए गए किसी कार्ड पर क्लिक करने से, Wallet व्यू बंद हो जाता है और उस कार्ड से जुड़ी गतिविधि की ज़्यादा जानकारी खुल जाती है.

  • अगर QuickAccessWalletService ने एक से ज़्यादा कार्ड उपलब्ध कराए हैं, तो उपयोगकर्ता एक कार्ड से दूसरे कार्ड पर स्वाइप कर सकता है.

  • ओवरफ़्लो मेन्यू में दो एंट्री होती हैं: एक से Wallet ऐप्लिकेशन खुलता है और दूसरी से सेटिंग में कार्ड और पास दिखाएं स्क्रीन खुलती है.

लॉक की स्थिति से जुड़े टेस्ट

  • अगर फ़ोन लॉक है, तो Wallet की जानकारी को Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT सेटिंग से कंट्रोल किया जाता है. इसे सेटिंग में जाकर कंट्रोल किया जा सकता है.
  • अगर फ़ोन लॉक है और POWER_MENU_LOCK_SHOW_CONTENT false है, तो Wallet नहीं दिखेगा.
  • अगर फ़ोन लॉक है और POWER_MENU_LOCK_SHOW_CONTENT true है, तो वॉलेट दिखेगा.
  • लॉक स्क्रीन पर Wallet दिखते समय फ़ोन को अनलॉक करने पर, कार्ड के लिए फिर से अनुरोध किया जाता है. इससे कार्ड का कॉन्टेंट अलग हो सकता है.

सुलभता से जुड़ी जांच

  • TalkBack का इस्तेमाल करने वाले लोग, बटुए के व्यू में बाईं और दाईं ओर स्वाइप करके नेविगेट कर सकते हैं. इसके अलावा, वे कार्ड के कॉन्टेंट की जानकारी सुनकर भी नेविगेट कर सकते हैं.
  • TalkBack की सुविधा चालू होने पर, बाईं और दाईं ओर स्वाइप करने से हर कार्ड बारी-बारी से चुना जाता है. TalkBack का इस्तेमाल करने वाले लोग, एनएफ़सी की सुविधा वाले पेमेंट टर्मिनल पर एनएफ़सी की सुविधा का इस्तेमाल करके पेमेंट करने का तरीका चुन सकते हैं और उसका इस्तेमाल कर सकते हैं.