क्विक सेटिंग, क्विक सेटिंग पैनल में दिखने वाली टाइल होती हैं. ये कार्रवाइयों को दिखाती हैं. उपयोगकर्ता इन पर टैप करके, बार-बार होने वाले टास्क तुरंत पूरे कर सकते हैं.
आपका ऐप्लिकेशन, TileService क्लास का इस्तेमाल करके, उपयोगकर्ताओं को कस्टम टाइल उपलब्ध करा सकता है. साथ ही, टाइल की स्थिति को ट्रैक करने के लिए, Tile ऑब्जेक्ट का इस्तेमाल कर सकता है. उदाहरण के लिए, ऐसी टाइल बनाई जा सकती है जिससे उपयोगकर्ता आपके ऐप्लिकेशन से मिले वीपीएन को चालू या बंद कर सकें.
तय करें कि टाइल कब बनानी है
हमारा सुझाव है कि आप उन खास सुविधाओं के लिए टाइल बनाएं जिन्हें उपयोगकर्ता अक्सर ऐक्सेस करते हैं या जिन्हें तुरंत ऐक्सेस करने की ज़रूरत होती है. इसके अलावा, दोनों ही मामलों में टाइल बनाई जा सकती हैं. सबसे असरदार टाइल वे होती हैं जिनमें ये दोनों खूबियां होती हैं. इनसे, बार-बार की जाने वाली कार्रवाइयों को तुरंत ऐक्सेस किया जा सकता है.
उदाहरण के लिए, किसी फ़िटनेस ऐप्लिकेशन के लिए टाइल बनाई जा सकती है. इससे उपयोगकर्ता, कसरत का सेशन तुरंत शुरू कर पाएंगे. हालांकि, हम एक ही ऐप्लिकेशन के लिए ऐसी टाइल बनाने का सुझाव नहीं देते जिससे उपयोगकर्ता अपने वर्कआउट का पूरा इतिहास देख सकें.
हमारा सुझाव है कि टाइल को आसानी से खोजने और इस्तेमाल करने लायक बनाने के लिए, इन तरीकों को अपनाने से बचें:
किसी ऐप्लिकेशन को लॉन्च करने के लिए, टाइल का इस्तेमाल करने से बचें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या स्टैंडर्ड लॉन्चर का इस्तेमाल करें.
उपयोगकर्ता की एक बार की जाने वाली कार्रवाइयों के लिए, टाइल का इस्तेमाल करने से बचें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या सूचना का इस्तेमाल करें.
बहुत ज़्यादा टाइल बनाने से बचें. हमारा सुझाव है कि हर ऐप्लिकेशन के लिए ज़्यादा से ज़्यादा दो विजेट इस्तेमाल करें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट का इस्तेमाल करें.
ऐसी टाइल इस्तेमाल करने से बचें जो जानकारी तो दिखाती हैं, लेकिन उपयोगकर्ताओं के लिए इंटरैक्टिव नहीं होतीं. इसके बजाय, सूचना या विजेट का इस्तेमाल करें.
अपनी टाइल बनाना
कोई टाइल बनाने के लिए, आपको पहले एक सही टाइल आइकॉन बनाना होगा. इसके बाद, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में TileService बनाएं और उसका एलान करें.
क्विक सेटिंग सैंपल में, टाइल बनाने और उसे मैनेज करने का उदाहरण दिया गया है.
पसंद के मुताबिक आइकॉन बनाना
आपको अपनी पसंद का आइकॉन देना होगा. यह आइकॉन, क्विक सेटिंग पैनल में मौजूद टाइल पर दिखता है. (यह आइकॉन, TileService का एलान करते समय जोड़ा जाएगा. इसके बारे में अगले सेक्शन में बताया गया है.) आइकॉन का बैकग्राउंड पारदर्शी होना चाहिए और उसका रंग सफ़ेद होना चाहिए. साथ ही, उसका साइज़ 24 x 24dp होना चाहिए और वह VectorDrawable के फ़ॉर्मैट में होना चाहिए.
ऐसा आइकॉन बनाएं जो आपकी टाइल के मकसद को विज़ुअल तौर पर दिखाता हो. इससे उपयोगकर्ताओं को यह पता चलता है कि आपकी टाइल उनकी ज़रूरतों के हिसाब से सही है या नहीं. उदाहरण के लिए, किसी फ़िटनेस ऐप्लिकेशन की टाइल के लिए स्टॉपवॉच का आइकॉन बनाया जा सकता है. इससे उपयोगकर्ता, कसरत का सेशन शुरू कर सकते हैं.
TileService बनाना और उसे तय करना
अपनी टाइल के लिए ऐसी सेवा बनाएं जो TileService क्लास को एक्सटेंड करती हो.
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() } }
अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में TileService का एलान करें. अपने TileService का नाम और लेबल जोड़ें. android:label के लिए ज़्यादा से ज़्यादा 18 वर्ण इस्तेमाल किए जा सकते हैं. साथ ही, पिछले सेक्शन में बनाया गया पसंद का आइकॉन और ज़रूरी अनुमति जोड़ें.
<!-- 18-character limit for android:label. -->
<service
android:name=".MyQSTileService"
android:exported="true"
android:label="@string/my_default_tile_label"
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 को सूचना मिलती है कि टाइल की स्थिति को उसकी अपनी प्रोसेस से अपडेट किया जाना चाहिए, तो हमारा सुझाव है कि आप ऐक्टिव मोड का इस्तेमाल करें. ऐक्टिव टाइल, सिस्टम पर पड़ने वाले लोड को कम करती हैं. ऐसा इसलिए, क्योंकि जब भी उपयोगकर्ता को क्विक सेटिंग पैनल दिखता है, तब उन्हें हर बार बाउंड करने की ज़रूरत नहीं होती.
स्टैटिक TileService.requestListeningState() तरीके को कॉल करके, सुनने की स्थिति शुरू करने का अनुरोध किया जा सकता है. साथ ही, onStartListening() पर कॉलबैक पाया जा सकता है.
अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में 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 को न जोड़ें.
टाइल की स्थितियों के बारे में खास जानकारी
जब कोई उपयोगकर्ता आपकी टाइल जोड़ता है, तो वह हमेशा इनमें से किसी एक स्थिति में मौजूद होती है.
4
STATE_ACTIVE: इससे पता चलता है कि सुविधा चालू है. इस स्थिति में, उपयोगकर्ता आपकी टाइल से इंटरैक्ट कर सकता है.उदाहरण के लिए, किसी फ़िटनेस ऐप्लिकेशन की टाइल के लिए,
STATE_ACTIVEका मतलब होगा कि उपयोगकर्ता ने कसरत का सेशन शुरू कर दिया है और टाइमर चल रहा है. इस टाइल की मदद से, उपयोगकर्ता कसरत का सेशन शुरू कर सकते हैं.STATE_INACTIVE: इससे पता चलता है कि यह सुविधा बंद है या रोकी गई है. इस स्थिति में, उपयोगकर्ता आपकी टाइल से इंटरैक्ट कर सकता है.फ़िटनेस ऐप्लिकेशन की टाइल का उदाहरण फिर से इस्तेमाल करने के लिए,
STATE_INACTIVEमें मौजूद टाइल का मतलब यह होगा कि उपयोगकर्ता ने कसरत का सेशन शुरू नहीं किया है. हालांकि, अगर वह चाहे, तो ऐसा कर सकता है.STATE_UNAVAILABLE: इससे पता चलता है कि प्रॉडक्ट कुछ समय के लिए उपलब्ध नहीं है. इस स्थिति में, उपयोगकर्ता आपकी टाइल से इंटरैक्ट नहीं कर सकता.उदाहरण के लिए,
STATE_UNAVAILABLEमें मौजूद टाइल का मतलब है कि फ़िलहाल, किसी वजह से उपयोगकर्ता के लिए टाइल उपलब्ध नहीं है.
सिस्टम, आपके Tile ऑब्जेक्ट की सिर्फ़ शुरुआती स्थिति सेट करता है. आपने Tile ऑब्जेक्ट की स्थिति को उसकी बाकी लाइफ़साइकल के लिए सेट किया है.
सिस्टम, टाइल के आइकॉन और बैकग्राउंड को टिंट कर सकता है, ताकि आपके Tile ऑब्जेक्ट की स्थिति दिख सके. STATE_ACTIVE पर सेट किए गए Tile ऑब्जेक्ट सबसे गहरे रंग के होते हैं. वहीं, STATE_INACTIVE और STATE_UNAVAILABLE पर सेट किए गए ऑब्जेक्ट हल्के रंग के होते हैं. रंग का सटीक शेड,
मैन्युफ़ैक्चरर और वर्शन के हिसाब से तय होता है.
टाइल अपडेट करना
onStartListening() पर कॉलबैक मिलने के बाद, अपनी टाइल को अपडेट किया जा सकता है.
टाइल के मोड के आधार पर, आपकी टाइल को कम से कम एक बार अपडेट किया जा सकता है. ऐसा तब तक किया जा सकता है, जब तक onStopListening() को कॉलबैक नहीं मिल जाता.
ऐक्टिव मोड में, onStopListening() पर कॉलबैक मिलने से पहले, टाइल को सिर्फ़ एक बार अपडेट किया जा सकता है. नॉन-ऐक्टिव मोड में, onStartListening() से onStopListening() के बीच, टाइल को जितनी बार चाहें उतनी बार अपडेट किया जा सकता है.
getQsTile() को कॉल करके, अपना Tile ऑब्जेक्ट वापस पाया जा सकता है. अपने Tile ऑब्जेक्ट के कुछ फ़ील्ड अपडेट करने के लिए, ये तरीके अपनाएं:
Tile ऑब्जेक्ट के फ़ील्ड को सही वैल्यू पर सेट करने के बाद, आपको अपनी टाइल को अपडेट करने के लिए updateTile() को कॉल करना होगा. इससे सिस्टम, अपडेट की गई टाइल के डेटा को पार्स करेगा और यूज़र इंटरफ़ेस (यूआई) को अपडेट करेगा.
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 = state.label qsTile.state = if (state.enabled) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE qsTile.icon = state.icon qsTile.updateTile() }
टैप मैनेज करना
अगर आपकी टाइल STATE_ACTIVE या STATE_INACTIVE में है, तो उपयोगकर्ता उस पर टैप करके कोई कार्रवाई ट्रिगर कर सकते हैं. इसके बाद, सिस्टम आपके ऐप्लिकेशन के onClick() कॉलबैक को शुरू करता है.
जब आपके ऐप्लिकेशन को onClick() पर कॉलबैक मिलता है, तो वह कोई डायलॉग या गतिविधि लॉन्च कर सकता है, बैकग्राउंड में काम ट्रिगर कर सकता है या टाइल की स्थिति बदल सकता है.
var counter = 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() }
डायलॉग बॉक्स लॉन्च करना
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 ऑब्जेक्ट को लागू करता है जिसे आपने इस तरीके में पास किया है.
टाइल को कैटगरी में बांटना
क्विक सेटिंग में उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, टाइल को कैटगरी में बांटा जा सकता है. सिस्टम, टाइल को कनेक्टिविटी, डिसप्ले, और निजता जैसी कैटगरी में व्यवस्थित करता है. सिस्टम, इन कैटगरी का इस्तेमाल करके क्विक सेटिंग के एडिट मोड में टाइल को क्रम से लगाता है और ग्रुप में बांटता है. इससे उपयोगकर्ताओं के लिए, टाइल को ढूंढना और मैनेज करना आसान हो जाता है.
लागू करना
TileService के लिए कोई कैटगरी तय करने के लिए, AndroidManifest.xml फ़ाइल में सेवा के एलान में मेटाडेटा फ़ील्ड जोड़ें:
- अपने
AndroidManifest.xmlमें,TileServiceके लिए<service>एलिमेंट में,<meta-data>एलिमेंट जोड़ें. android:name: इस वैल्यू कोandroid.service.quicksettings.TILE_CATEGORYपर सेट करें.android:value: पहले से तय की गई कैटगरी के कॉन्सटेंट में से कोई एक असाइन करें, जैसे किandroid.service.quicksettings.CATEGORY_CONNECTIVITYयाandroid.service.quicksettings.CATEGORY_DISPLAY.
जैसा कि इस उदाहरण में दिखाया गया है:
<service
android:name=".MyConnectivityTileService"
[...]
>
<meta-data android:name="android.service.quicksettings.TILE_CATEGORY"
android:value="android.service.quicksettings.CATEGORY_CONNECTIVITY" />
</service>
एपीआई, पहले से तय की गई कैटगरी का एक सेट उपलब्ध कराता है. इनमें से कोई भी कैटगरी चुनी जा सकती है. इन कैटगरी को TileService क्लास में स्ट्रिंग कॉन्स्टेंट के तौर पर तय किया जाता है.
अगर कोई कैटगरी नहीं चुनी जाती है, तो सिस्टम अपने-आप एक डिफ़ॉल्ट कैटगरी असाइन कर देता है:
- सिस्टम ऐप्लिकेशन से: उन टाइल के लिए जो किसी सिस्टम ऐप्लिकेशन का हिस्सा हैं.
- आपके इंस्टॉल किए गए ऐप्लिकेशन से: उपयोगकर्ता के इंस्टॉल किए गए ऐप्लिकेशन की टाइल के लिए.
Google Pixel डिवाइसों में क्विक सेटिंग की कैटगरी का इस्तेमाल किया जाता है. हालांकि, ओईएम अपने सिस्टम यूज़र इंटरफ़ेस (यूआई) में इस कैटगरी की जानकारी का इस्तेमाल कर सकते हैं या इसे अनदेखा कर सकते हैं.
उपयोगकर्ता को अपनी टाइल जोड़ने के लिए कहें
मैन्युअल तरीके से टाइल जोड़ने के लिए, उपयोगकर्ताओं को यह तरीका अपनाना होगा:
- क्विक सेटिंग पैनल खोलने के लिए, नीचे की ओर स्वाइप करें.
- 'बदलाव करें' बटन पर टैप करें.
- अपने डिवाइस पर मौजूद सभी टाइल को तब तक स्क्रोल करें, जब तक कि उन्हें आपकी टाइल न मिल जाए.
- अपनी टाइल को दबाकर रखें और उसे चालू टाइल की सूची में खींचें और छोड़ें.
उपयोगकर्ता किसी भी समय आपकी टाइल को हटा सकता है या उसकी जगह बदल सकता है.
Android 13 और इसके बाद के वर्शन पर, requestAddTileService() तरीके का इस्तेमाल किया जा सकता है. इससे उपयोगकर्ताओं के लिए, डिवाइस पर आपकी टाइल जोड़ना काफ़ी आसान हो जाता है. इस तरीके से, उपयोगकर्ताओं को क्विक सेटिंग पैनल में आपकी टाइल को तुरंत जोड़ने का अनुरोध मिलता है. प्रॉम्प्ट में ऐप्लिकेशन का नाम, दिया गया लेबल, और आइकॉन शामिल होता है.
public void requestAddTileService (
ComponentName tileServiceComponentName,
CharSequence tileLabel,
Icon icon,
Executor resultExecutor,
Consumer<Integer> resultCallback
)
कॉलबैक में यह जानकारी होती है कि टाइल जोड़ी गई या नहीं, वह पहले से मौजूद थी या नहीं या कोई गड़बड़ी हुई या नहीं.
उपयोगकर्ताओं को कब और कितनी बार प्रॉम्प्ट करना है, यह तय करते समय अपनी सूझ-बूझ का इस्तेमाल करें. हमारा सुझाव है कि requestAddTileService() को सिर्फ़ तब कॉल करें, जब उपयोगकर्ता पहली बार आपकी टाइल की किसी सुविधा से इंटरैक्ट करे.
अगर उपयोगकर्ता ने किसी
ComponentName के लिए, पहले कई बार अनुरोध अस्वीकार किया है, तो सिस्टम उस के लिए अनुरोधों को प्रोसेस करना बंद कर सकता है. उपयोगकर्ता की पहचान, इस सेवा को वापस पाने के लिए इस्तेमाल किए गए Context से की जाती है: यह मौजूदा उपयोगकर्ता से मेल खाना चाहिए.