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

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

हमारा सुझाव है कि टाइल को आसानी से खोजने और इस्तेमाल करने में मदद करने के लिए, कुछ खास तरीकों से बचें:
किसी ऐप्लिकेशन को लॉन्च करने के लिए टाइल का इस्तेमाल न करें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या स्टैंडर्ड लॉन्चर का इस्तेमाल करें.
उपयोगकर्ता की एक बार की गई कार्रवाइयों के लिए टाइल का इस्तेमाल करने से बचें. इसके बजाय, ऐप्लिकेशन के शॉर्टकट या सूचना का इस्तेमाल करें.
बहुत ज़्यादा टाइल न बनाएं. हमारा सुझाव है कि हर ऐप्लिकेशन के लिए, ज़्यादा से ज़्यादा दो पैरामीटर इस्तेमाल किए जा सकते हैं. किसी शॉर्टकट का इस्तेमाल करें.
ऐसी टाइल का इस्तेमाल करने से बचें जो जानकारी दिखाती हों, लेकिन उपयोगकर्ताओं के लिए इंटरैक्टिव न हों. इसके बजाय, सूचना या विजेट का इस्तेमाल करें.
अपनी टाइल बनाएं
टाइल बनाने के लिए, आपको सबसे पहले सही टाइल आइकॉन बनाना होगा. इसके बाद, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में TileService
बनाकर उसे एलान करना होगा.
क्विक सेटिंग सैंपल में, अलग-अलग प्रोसेस बनाने का तरीका बताया जाता है और टाइल मैनेज करें.
अपना कस्टम आइकॉन बनाना
आपको एक कस्टम आइकॉन देना होगा. यह आइकॉन, Quick में टाइल पर दिखेगा
सेटिंग पैनल. (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()
कोई गतिविधि शुरू करता है
पैनल. अगर दिखाने के लिए ज़्यादा जानकारी है, तो गतिविधियों की जानकारी काम की होती है
या अगर आपकी गतिविधि बहुत ज़्यादा इंटरैक्टिव हो.
अगर आपके ऐप्लिकेशन को लोगों के साथ ज़्यादा इंटरैक्शन करने की ज़रूरत है, तो ऐप्लिकेशन को गतिविधि को अंतिम उपाय के रूप में स्वीकार नहीं किया जाता. इसके बजाय, डायलॉग या टॉगल का इस्तेमाल करें.
टाइल पर देर तक टैप करने से, उपयोगकर्ता को ऐप्लिकेशन की जानकारी वाली स्क्रीन दिखेगी. बदलने के लिए
और इसके बजाय प्राथमिकताएं सेट करने के लिए कोई गतिविधि लॉन्च करें,
इसके साथ आपकी किसी गतिविधि में <intent-filter>
ACTION_QS_TILE_PREFERENCES
.
Android एपीआई 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
ऑब्जेक्ट को लागू करता है जिसे आपने इस तरीके में पास किया है.
उपयोगकर्ता से टाइल जोड़ने का अनुरोध करें
टाइल को मैन्युअल तरीके से जोड़ने के लिए, उपयोगकर्ताओं को ये चरण पूरे करने होंगे:
- क्विक सेटिंग पैनल खोलने के लिए, नीचे की ओर स्वाइप करें.
- 'बदलाव करें' बटन पर टैप करें.
- उनके डिवाइस पर मौजूद सभी टाइल पर तब तक स्क्रोल करें, जब तक वे आपकी टाइल नहीं ढूंढ लेते.
- अपनी टाइल को दबाकर रखें और उसे खींचकर, इस्तेमाल की जा रही टाइल की सूची में छोड़ें.
उपयोगकर्ता किसी भी समय आपकी टाइल को दूसरी जगह ले जा सकता है या उसे हटा सकता है.
Android 13 से, requestAddTileService()
तरीके का इस्तेमाल किया जा सकता है, ताकि उपयोगकर्ता किसी डिवाइस पर आपकी टाइल को आसानी से जोड़ सकें. इस तरीके से, उपयोगकर्ताओं को सीधे तौर पर उनकी क्विक सेटिंग पैनल में टाइल जोड़ने का अनुरोध मिलता है. प्रॉम्प्ट में ऐप्लिकेशन का नाम, दिया गया लेबल, और आइकॉन शामिल होता है.

public void requestAddTileService (
ComponentName tileServiceComponentName,
CharSequence tileLabel,
Icon icon,
Executor resultExecutor,
Consumer<Integer> resultCallback
)
कॉलबैक में यह जानकारी होती है कि टाइल जोड़ी गई या नहीं, नहीं जोड़ा गया, अगर यह पहले से मौजूद था या कोई गड़बड़ी हुई थी.
उपयोगकर्ताओं को कब और कितनी बार प्रॉम्प्ट दिखाना है, यह तय करते समय अपनी समझदारी का इस्तेमाल करें. हमारा सुझाव है कि आप requestAddTileService()
को सिर्फ़ संदर्भ में कॉल करें. जैसे, जब उपयोगकर्ता पहली बार आपकी टाइल की सुविधा से जुड़ी किसी सुविधा से इंटरैक्ट करता है.
अगर उपयोगकर्ता ने पहले ही कई बार किसी ComponentName
के लिए अनुरोध अस्वीकार कर दिया है, तो सिस्टम उस ComponentName
के लिए अनुरोधों को प्रोसेस करना बंद कर सकता है. कॉन्टेंट बनाने
उपयोगकर्ता को, इसे पाने के लिए इस्तेमाल किए गए Context
से तय किया जाता है
सेवा—यह वर्तमान उपयोगकर्ता से मेल खाना चाहिए.