अपने ऐप्लिकेशन के लिए पसंद के मुताबिक, क्विक सेटिंग टाइल बनाएं

क्विक सेटिंग, क्विक सेटिंग पैनल में दिखने वाली टाइल होती हैं. इनमें ऐसी कार्रवाइयां होती हैं जिन पर टैप करके, उपयोगकर्ता बार-बार होने वाले टास्क तुरंत पूरे कर सकते हैं. आपका ऐप्लिकेशन, TileService क्लास की मदद से, उपयोगकर्ताओं को कस्टम टाइल उपलब्ध करा सकता है. साथ ही, टाइल की स्थिति को ट्रैक करने के लिए, Tile ऑब्जेक्ट का इस्तेमाल कर सकता है. उदाहरण के लिए, आपके पास ऐसी टाइल बनाने का विकल्प है जिसकी मदद से उपयोगकर्ता, आपके ऐप्लिकेशन से मिलने वाले वीपीएन को चालू या बंद कर सकें.

क्विक सेटिंग पैनल, जिसमें वीपीएन टाइल को चालू और बंद किया गया है
पहला डायग्राम. क्विक सेटिंग पैनल, जिसमें वीपीएन टाइल को चालू और बंद किया गया है.

टाइल बनाने का समय तय करना

हमारा सुझाव है कि आप उन खास सुविधाओं के लिए टाइल बनाएं जिन्हें उपयोगकर्ता अक्सर ऐक्सेस करते हैं या जिन्हें तुरंत ऐक्सेस करना होता है. सबसे असरदार टाइल वे होती हैं जो इन दोनों बातों को ध्यान में रखकर बनाई गई हों. इनसे अक्सर की जाने वाली कार्रवाइयों को तुरंत ऐक्सेस किया जा सकता है.

उदाहरण के लिए, किसी फ़िटनेस ऐप्लिकेशन के लिए टाइल बनाई जा सकती है, जिससे उपयोगकर्ता तुरंत कसरत का सेशन शुरू कर पाएंगे. हालांकि, हमारा सुझाव है कि आप उसी ऐप्लिकेशन के लिए टाइल न बनाएं जिससे उपयोगकर्ता अपने पूरे वर्कआउट के इतिहास की समीक्षा कर सकें.

फ़िटनेस ऐप्लिकेशन की टाइल के इस्तेमाल के उदाहरण
दूसरी इमेज. फ़िटनेस ऐप्लिकेशन के लिए, सुझाई गई बनाम सुझाई गई टाइल के उदाहरण.

टाइल को आसानी से खोजा जा सके और उसका इस्तेमाल किया जा सके, इसके लिए हमारा सुझाव है कि आप इन तरीकों से बचें:

  • किसी ऐप्लिकेशन को लॉन्च करने के लिए टाइल का इस्तेमाल न करें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या स्टैंडर्ड लॉन्चर का इस्तेमाल करें.

  • उपयोगकर्ता की एक बार की गई कार्रवाइयों के लिए टाइल का इस्तेमाल करने से बचें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या सूचना का इस्तेमाल करें.

  • बहुत ज़्यादा टाइल बनाने से बचें. हमारा सुझाव है कि हर ऐप्लिकेशन के लिए ज़्यादा से ज़्यादा दो स्क्रीन सेट करें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट का इस्तेमाल करें.

  • ऐसी टाइल का इस्तेमाल न करें जो जानकारी दिखाती हों, लेकिन उपयोगकर्ताओं के लिए इंटरैक्टिव न हों. इसके बजाय, सूचना या विजेट का इस्तेमाल करें.

टाइल बनाना

टाइल बनाने के लिए, आपको सबसे पहले सही टाइल आइकॉन बनाना होगा. इसके बाद, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में TileService बनाकर उसे एलान करना होगा.

क्विक सेटिंग का सैंपल, टाइल बनाने और मैनेज करने का उदाहरण देता है.

कस्टम आइकॉन बनाना

आपको एक कस्टम आइकॉन देना होगा, जो क्विक सेटिंग पैनल में टाइल पर दिखता है. (TileService का एलान करते समय, आपको यह आइकॉन जोड़ना होगा. इसके बारे में अगले सेक्शन में बताया गया है.) आइकॉन का रंग बिल्कुल सफ़ेद होना चाहिए और उसका बैकग्राउंड पारदर्शी होना चाहिए. साथ ही, उसका साइज़ 24 x 24dp होना चाहिए और वह VectorDrawable के तौर पर होना चाहिए.

ड्रॉ करने लायक वेक्टर का उदाहरण
तीसरी इमेज. ड्रॉ करने लायक वेक्टर का उदाहरण.

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

TileService बनाना और उसका एलान करना

अपनी टाइल के लिए ऐसी सेवा बनाएं जो TileService क्लास को बढ़ाती हो.

Kotlin

class MyQSTileService: TileService() {

  // Called when the user adds your tile.
  override fun onTileAdded() {
    super.onTileAdded()
  }
  // Called when your app can update your tile.
  override fun onStartListening() {
    super.onStartListening()
  }

  // Called when your app can no longer update your tile.
  override fun onStopListening() {
    super.onStopListening()
  }

  // Called when the user taps on your tile in an active or inactive state.
  override fun onClick() {
    super.onClick()
  }
  // Called when the user removes your tile.
  override fun onTileRemoved() {
    super.onTileRemoved()
  }
}

Java

public class MyQSTileService extends TileService {

  // Called when the user adds your tile.
  @Override
  public void onTileAdded() {
    super.onTileAdded();
  }

  // Called when your app can update your tile.
  @Override
  public void onStartListening() {
    super.onStartListening();
  }

  // Called when your app can no longer update your tile.
  @Override
  public void onStopListening() {
    super.onStopListening();
  }

  // Called when the user taps on your tile in an active or inactive state.
  @Override
  public void onClick() {
    super.onClick();
  }

  // Called when the user removes your tile.
  @Override
  public void onTileRemoved() {
    super.onTileRemoved();
  }
}

अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, TileService का एलान करें. अपने TileService का नाम और लेबल जोड़ें. साथ ही, पिछले सेक्शन में बनाया गया कस्टम आइकॉन और सही अनुमति जोड़ें.

 <service
     android:name=".MyQSTileService"
     android:exported="true"
     android:label="@string/my_default_tile_label"  // 18-character limit.
     android:icon="@drawable/my_default_icon_label"
     android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
     <intent-filter>
         <action android:name="android.service.quicksettings.action.QS_TILE" />
     </intent-filter>
 </service>

अपनी TileService मैनेज करना

ऐप्लिकेशन मेनिफ़ेस्ट में TileService बनाने और उसकी जानकारी देने के बाद, आपको उसकी स्थिति मैनेज करनी होगी.

TileService एक बाउंड सेवा है. जब आपके ऐप्लिकेशन से अनुरोध किया जाता है या सिस्टम को उससे संपर्क करना होता है, तब आपका TileService बाउंड होता है. आम तौर पर, बाउंड-सेवा के लाइफ़साइकल में ये चार कॉलबैक तरीके होते हैं: onCreate(), onBind(), onUnbind(), और onDestroy(). जब भी सेवा, लाइफ़साइकल के किसी नए चरण में प्रवेश करती है, तो सिस्टम इन तरीकों को लागू करता है.

TileService की लाइफ़साइकल की खास जानकारी

बाउंड की गई सेवा के लाइफ़साइकल को कंट्रोल करने वाले कॉलबैक के अलावा, आपको TileService लाइफ़साइकल के हिसाब से अन्य तरीके भी लागू करने होंगे. इन तरीकों को onCreate() और onDestroy() के बाहर भी कॉल किया जा सकता है, क्योंकि Service लाइफ़साइकल के तरीके और TileService लाइफ़साइकल के तरीके, दो अलग-अलग असाइनोक्रोनस थ्रेड में कॉल किए जाते हैं.

TileService के लाइफ़साइकल में ये तरीके शामिल होते हैं. जब भी आपका TileService लाइफ़साइकल के किसी नए चरण में प्रवेश करता है, तब सिस्टम इन तरीकों को शुरू करता है:

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

  • onStartListening() और onStopListening(): जब भी आपका ऐप्लिकेशन टाइल को अपडेट करता है, तब इन तरीकों को कॉल किया जाता है. साथ ही, इन्हें अक्सर कॉल किया जाता है. TileService, onStartListening() और onStopListening() के बीच बाउंड रहता है. इससे आपके ऐप्लिकेशन को टाइल में बदलाव करने और अपडेट को पुश करने की अनुमति मिलती है.

  • onTileRemoved(): इस तरीके को सिर्फ़ तब ट्रिगर किया जाता है, जब उपयोगकर्ता आपका टाइल हटाता है.

सुनने का मोड चुनना

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

यह न मानें कि आपका TileService, onStartListening() और onStopListening() के जोड़े के तरीकों के बाहर रहेगा.

ऐक्टिव मोड का इस्तेमाल ऐसे TileService के लिए करें जो अपनी प्रोसेस में अपनी स्थिति को सुनता और मॉनिटर करता है. ऐक्टिव मोड में मौजूद TileService, onTileAdded(), onTileRemoved(), टैप इवेंट के लिए बाउंड होता है. साथ ही, ऐप्लिकेशन प्रोसेस के अनुरोध करने पर भी ऐसा होता है.

अगर टाइल की स्थिति को अपने-आप अपडेट करने की प्रोसेस के दौरान, आपके TileService को सूचना दी जाती है, तो हमारा सुझाव है कि आप ऐक्टिव मोड का इस्तेमाल करें. ऐक्टिव टाइल, सिस्टम पर दबाव को कम करती हैं. ऐसा इसलिए, क्योंकि जब भी उपयोगकर्ता को क्विक सेटिंग पैनल दिखता है, तब उन्हें बंधे होने की ज़रूरत नहीं होती.

सुनने की स्थिति शुरू करने का अनुरोध करने और onStartListening() पर कॉलबैक पाने के लिए, स्टैटिक TileService.requestListeningState() तरीके को कॉल किया जा सकता है.

ऐक्टिव मोड का एलान करने के लिए, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में META_DATA_ACTIVE_TILE जोड़ें.

<service ...>
    <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
         android:value="true" />
    ...
</service>

ऐक्टिव मोड के अलावा अन्य मोड

नॉन-ऐक्टिव मोड, स्टैंडर्ड मोड होता है. अगर उपयोगकर्ता को आपकी टाइल दिखने पर, TileService बाउंड हो जाता है, तो वह ऐक्टिव मोड में नहीं होता. इसका मतलब है कि आपका TileService, कभी-कभी अपने कंट्रोल से बाहर बना और बंधा जा सकता है. जब उपयोगकर्ता टाइल नहीं देख रहा हो, तब भी इसे अनबाउंड और मिटाया जा सकता है.

जब उपयोगकर्ता क्विक सेटिंग पैनल खोलता है, तो आपके ऐप्लिकेशन को onStartListening() पर कॉलबैक मिलता है. onStartListening() और onStopListening() के बीच, अपने Tile ऑब्जेक्ट को जितनी बार चाहें उतनी बार अपडेट किया जा सकता है.

आपको ऐप्लिकेशन के नॉन-ऐक्टिव मोड के बारे में बताने की ज़रूरत नहीं है. इसके लिए, बस अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में META_DATA_ACTIVE_TILE को शामिल न करें.

टाइल की स्थितियों के बारे में खास जानकारी

जब कोई उपयोगकर्ता आपकी टाइल जोड़ता है, तो वह हमेशा इनमें से किसी एक स्थिति में मौजूद रहती है.

  • STATE_ACTIVE: चालू या चालू होने की स्थिति दिखाता है. इस स्थिति में उपयोगकर्ता, आपकी टाइल से इंटरैक्ट कर सकता है.

    उदाहरण के लिए, फ़िटनेस ऐप्लिकेशन की टाइल के लिए, STATE_ACTIVE का मतलब होगा कि उपयोगकर्ता ने कसरत का सेशन शुरू किया है और टाइमर चल रहा है.

  • STATE_INACTIVE: बंद या रोके गए स्टेटस के बारे में बताता है. इस स्थिति में उपयोगकर्ता, आपकी टाइल से इंटरैक्ट कर सकता है.

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

  • STATE_UNAVAILABLE: यह स्थिति बताती है कि फ़िलहाल यह सुविधा उपलब्ध नहीं है. इस स्थिति में, उपयोगकर्ता आपकी टाइल से इंटरैक्ट नहीं कर सकता.

    उदाहरण के लिए, STATE_UNAVAILABLE में मौजूद टाइल का मतलब है कि टाइल फ़िलहाल उपयोगकर्ता के लिए उपलब्ध नहीं है.

सिस्टम सिर्फ़ आपके Tile ऑब्जेक्ट की शुरुआती स्थिति सेट करता है. Tile ऑब्जेक्ट के बाकी लाइफ़साइकल के दौरान, आपके पास उसके स्टेटस को सेट करने का विकल्प होता है.

आपके Tile ऑब्जेक्ट की स्थिति दिखाने के लिए, सिस्टम टाइल के आइकॉन और बैकग्राउंड को रंग दे सकता है. Tile STATE_ACTIVE पर सेट किए गए ऑब्जेक्ट सबसे गहरे होते हैं. इसके बाद, STATE_INACTIVE और STATE_UNAVAILABLE पर सेट किए गए ऑब्जेक्ट क्रमशः गहरे से हल्के होते जाते हैं. रंग का सटीक ह्यू, मैन्युफ़ैक्चरर और वर्शन के हिसाब से अलग-अलग होता है.

ऑब्जेक्ट की स्थितियों को दिखाने के लिए, वीपीएन टाइल को रंग दिया गया
चौथी इमेज. टाइल के स्टेटस (क्रमशः चालू, बंद, और उपलब्ध नहीं) को दिखाने के लिए, टाइल को रंगे जाने के उदाहरण.

अपनी टाइल अपडेट करना

onStartListening() पर कॉलबैक मिलने के बाद, अपनी टाइल अपडेट की जा सकती है. टाइल के मोड के आधार पर, onStopListening() को कॉलबैक मिलने तक आपकी टाइल को कम से कम एक बार अपडेट किया जा सकता है.

ऐक्टिव मोड में, onStopListening() को कॉलबैक मिलने से पहले, अपनी टाइल को सिर्फ़ एक बार अपडेट किया जा सकता है. ऐक्टिव मोड के बंद होने पर, onStartListening() और onStopListening() के बीच अपनी टाइल को जितनी बार चाहें उतनी बार अपडेट किया जा सकता है.

getQsTile() को कॉल करके, अपना Tile ऑब्जेक्ट वापस पाया जा सकता है. अपने Tile ऑब्जेक्ट के खास फ़ील्ड अपडेट करने के लिए, इन तरीकों को कॉल करें:

Tile ऑब्जेक्ट के फ़ील्ड को सही वैल्यू पर सेट करने के बाद, आपको अपनी टाइल अपडेट करने के लिए updateTile() को कॉल करना होगा. इससे सिस्टम, अपडेट किए गए टाइल डेटा को पार्स करेगा और यूज़र इंटरफ़ेस (यूआई) को अपडेट करेगा.

Kotlin

data class StateModel(val enabled: Boolean, val label: String, val icon: Icon)

override fun onStartListening() {
  super.onStartListening()
  val state = getStateFromService()
  qsTile.label = state.label
  qsTile.contentDescription = tile.label
  qsTile.state = if (state.enabled) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
  qsTile.icon = state.icon
  qsTile.updateTile()
}

Java

public class StateModel {
  final boolean enabled;
  final String label;
  final Icon icon;

  public StateModel(boolean e, String l, Icon i) {
    enabled = e;
    label = l;
    icon = i;
  }
}

@Override
public void onStartListening() {
  super.onStartListening();
  StateModel state = getStateFromService();
  Tile tile = getQsTile();
  tile.setLabel(state.label);
  tile.setContentDescription(state.label);
  tile.setState(state.enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
  tile.setIcon(state.icon);
  tile.updateTile();
}

टैप मैनेज करना

अगर आपकी टाइल STATE_ACTIVE या STATE_INACTIVE में है, तो उपयोगकर्ता किसी कार्रवाई को ट्रिगर करने के लिए आपकी टाइल पर टैप कर सकते हैं. इसके बाद, सिस्टम आपके ऐप्लिकेशन के onClick() कॉलबैक को ट्रिगर करता है.

जब आपके ऐप्लिकेशन को onClick() के लिए कॉलबैक मिलता है, तो वह कोई डायलॉग या गतिविधि लॉन्च कर सकता है, बैकग्राउंड में काम को ट्रिगर कर सकता है या आपकी टाइल की स्थिति बदल सकता है.

Kotlin

var clicks = 0
override fun onClick() {
  super.onClick()
  counter++
  qsTile.state = if (counter % 2 == 0) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
  qsTile.label = "Clicked $counter times"
  qsTile.contentDescription = qsTile.label
  qsTile.updateTile()
}

Java

int clicks = 0;

@Override
public void onClick() {
  super.onClick();
  counter++;
  Tile tile = getQsTile();
  tile.setState((counter % 2 == 0) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
  tile.setLabel("Clicked " + counter + " times");
  tile.setContentDescription(tile.getLabel());
  tile.updateTile();
}

डायलॉग लॉन्च करना

showDialog(), क्विक सेटिंग पैनल को छोटा कर देता है और एक डायलॉग दिखाता है. अगर आपकी कार्रवाई के लिए, उपयोगकर्ता की सहमति या अतिरिक्त इनपुट की ज़रूरत है, तो अपनी कार्रवाई में संदर्भ जोड़ने के लिए डायलॉग का इस्तेमाल करें.

कोई गतिविधि लॉन्च करना

startActivityAndCollapse() पैनल को छोटा करते समय कोई गतिविधि शुरू करता है. गतिविधियां तब काम की होती हैं, जब आपको डायलॉग बॉक्स में मौजूद जानकारी के मुकाबले ज़्यादा जानकारी दिखानी हो या आपकी कार्रवाई ज़्यादा इंटरैक्टिव हो.

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

किसी टाइल पर लंबे समय तक टैप करने पर, उपयोगकर्ता को ऐप्लिकेशन की जानकारी वाली स्क्रीन दिखती है. इस व्यवहार को बदलने और इसके बजाय, प्राथमिकताएं सेट करने के लिए कोई गतिविधि लॉन्च करने के लिए, अपनी किसी गतिविधि में ACTION_QS_TILE_PREFERENCES के साथ <intent-filter> जोड़ें.

Android API 28 से, PendingIntent में Intent.FLAG_ACTIVITY_NEW_TASK होना चाहिए:

if (Build.VERSION.SDK_INT >= 28) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}

इसके अलावा, AndroidManifest.xml में फ़्लैग को किसी खास Activity सेक्शन में जोड़ा जा सकता है.

अपनी टाइल को टॉगल करने लायक के तौर पर मार्क करना

हमारा सुझाव है कि अगर आपकी टाइल मुख्य रूप से दो स्थितियों वाले स्विच के तौर पर काम करती है, तो उसे टॉगल करने लायक के तौर पर मार्क करें. टाइल का काम करने का यह सबसे सामान्य तरीका है. इससे, ऑपरेटिंग सिस्टम को टाइल के व्यवहार के बारे में जानकारी मिलती है. साथ ही, टाइल को ऐक्सेस करने की सुविधा को बेहतर बनाया जा सकता है.

अपनी टाइल को टॉगल किए जा सकने वाले के तौर पर मार्क करने के लिए, TOGGLEABLE_TILE मेटाडेटा को true पर सेट करें.

<service ...>
  <meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
    android:value="true" />
</service>

सुरक्षित तरीके से लॉक किए गए डिवाइसों पर सिर्फ़ सुरक्षित कार्रवाइयां करना

लॉक किए गए डिवाइसों पर, आपकी टाइल लॉक स्क्रीन पर सबसे ऊपर दिख सकती है. अगर टाइल में संवेदनशील जानकारी है, तो isSecure() की वैल्यू देखें. इससे यह पता चलेगा कि डिवाइस सुरक्षित है या नहीं. साथ ही, आपके TileService को अपने व्यवहार में बदलाव करना चाहिए.

अगर लॉक होने पर टाइल की कार्रवाई करना सुरक्षित है, तो लॉक स्क्रीन पर सबसे ऊपर कोई गतिविधि शुरू करने के लिए, startActivity() का इस्तेमाल करें.

अगर टाइल की कार्रवाई असुरक्षित है, तो उपयोगकर्ता को अपने डिवाइस को अनलॉक करने के लिए कहने के लिए, unlockAndRun() का इस्तेमाल करें. अगर पुष्टि हो जाती है, तो सिस्टम उस Runnable ऑब्जेक्ट को लागू करता है जिसे आपने इस तरीके में पास किया है.

उपयोगकर्ता को अपनी टाइल जोड़ने के लिए कहना

टाइल को मैन्युअल तरीके से जोड़ने के लिए, उपयोगकर्ताओं को ये चरण पूरे करने होंगे:

  1. क्विक सेटिंग पैनल खोलने के लिए, नीचे की ओर स्वाइप करें.
  2. 'बदलाव करें' बटन पर टैप करें.
  3. जब तक वह आपकी टाइल न ढूंढ ले, तब तक उसके डिवाइस पर सभी टाइल को स्क्रोल करें.
  4. अपनी टाइल को दबाकर रखें और उसे ऐक्टिव टाइल की सूची में खींचें और छोड़ें.

उपयोगकर्ता, आपकी टाइल को किसी भी समय दूसरी जगह ले जा सकता है या हटा सकता है.

Android 13 से, requestAddTileService() तरीके का इस्तेमाल किया जा सकता है, ताकि उपयोगकर्ता किसी डिवाइस पर आपकी टाइल को आसानी से जोड़ सकें. इस तरीके से, उपयोगकर्ताओं को सीधे तौर पर क्विक सेटिंग पैनल में आपकी टाइल जोड़ने का अनुरोध मिलता है. प्रॉम्प्ट में ऐप्लिकेशन का नाम, दिया गया लेबल, और आइकॉन शामिल होता है.

क्विक सेटिंग प्लेसमेंट एपीआई का प्रॉम्प्ट
पांचवीं इमेज. क्विक सेटिंग प्लेसमेंट एपीआई का प्रॉम्प्ट.
public void requestAddTileService (
  ComponentName tileServiceComponentName,
  CharSequence tileLabel,
  Icon icon,
  Executor resultExecutor,
  Consumer<Integer> resultCallback
)

कॉलबैक में यह जानकारी होती है कि टाइल जोड़ी गई या नहीं, जोड़ी नहीं गई, पहले से मौजूद थी या कोई गड़बड़ी हुई.

उपयोगकर्ताओं को कब और कितनी बार प्रॉम्प्ट दिखाना है, यह तय करते समय अपनी समझदारी का इस्तेमाल करें. हमारा सुझाव है कि आप requestAddTileService() को सिर्फ़ संदर्भ में कॉल करें. जैसे, जब उपयोगकर्ता पहली बार आपकी टाइल की सुविधा से इंटरैक्ट करता है.

अगर उपयोगकर्ता ने पहले ही कई बार किसी ComponentName के लिए अनुरोध अस्वीकार कर दिया है, तो सिस्टम उस ComponentName के लिए अनुरोधों को प्रोसेस करना बंद कर सकता है. इस सेवा को वापस पाने के लिए इस्तेमाल किए गए Context से उपयोगकर्ता का पता चलता है. यह मौजूदा उपयोगकर्ता से मेल खाना चाहिए.