डाइरेक्ट शेयर टारगेट का इस्तेमाल करें, ताकि अन्य ऐप्लिकेशन के उपयोगकर्ता आसानी से और तेज़ी से यूआरएल, इमेज या अन्य तरह का डेटा आपके ऐप्लिकेशन के साथ शेयर कर सकें. डाइरेक्ट शेयर की सुविधा, Android की शेयरशीट पर सीधे तौर पर मैसेजिंग और सोशल ऐप्लिकेशन से संपर्क दिखाती है. इससे उपयोगकर्ताओं को ऐप्लिकेशन चुनने और फिर संपर्क ढूंढने की ज़रूरत नहीं पड़ती.
ShortcutManagerCompat
एक AndroidX API है. यह शेयर करने के शॉर्टकट उपलब्ध कराता है. साथ ही, यह बंद किए जा चुके ChooserTargetService API के साथ काम करता है. शेयर करने के शॉर्टकट और ChooserTargets, दोनों को पब्लिश करने का यह सबसे अच्छा तरीका है. निर्देशों के लिए, इस पेज पर Sharing Shortcuts और ChooserTargets, दोनों उपलब्ध कराने के लिए AndroidX का इस्तेमाल करना लेख पढ़ें.
सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोगों या ग्रुप को पब्लिश करना
शेयरशीट में मौजूद 'सीधे तौर पर शेयर करें' लाइन में, सिर्फ़ Sharing Shortcuts API से मिले डाइनैमिक शॉर्टकट दिखते हैं. Direct Share के टारगेट पब्लिश करने के लिए, यह तरीका अपनाएं.
अपने ऐप्लिकेशन की एक्सएमएल रिसॉर्स फ़ाइल में,
share-targetएलिमेंट के बारे में बताएं.<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>जब आपका ऐप्लिकेशन शुरू हो, तब
setDynamicShortcutsका इस्तेमाल करके, डाइनैमिक शॉर्टकट को उनकी अहमियत के हिसाब से क्रम में लगाएं.कम इंडेक्स का मतलब है कि वह ज़्यादा ज़रूरी है. अगर आपको कोई कम्यूनिकेशन ऐप्लिकेशन बनाना है, तो इसमें हाल ही की बातचीत को सबसे ऊपर दिखाया जा सकता है. ये बातचीत, आपके ऐप्लिकेशन में दिखने के क्रम में होनी चाहिए. ऐसे शॉर्टकट पब्लिश न करें जो पुराने हो चुके हैं. अगर किसी बातचीत में पिछले 30 दिनों से उपयोगकर्ता की कोई गतिविधि नहीं हुई है, तो उसे पुराना माना जाता है.
Kotlin
ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))
Java
List<ShortcutInfoCompat> shortcuts = new ArrayList<>(); shortcuts.add(shortcut1); shortcuts.add(shortcut2); ... ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
अगर आपको कोई कम्यूनिकेशन ऐप्लिकेशन डेवलप करना है, तो शॉर्टकट के इस्तेमाल की जानकारी तुरंत दें. इसके लिए,
pushDynamicShortcutका इस्तेमाल करें. ऐसा तब करें, जब उपयोगकर्ता को किसी संपर्क से मैसेज मिले या वह किसी संपर्क को मैसेज भेजे. ज़्यादा जानकारी के लिए, इस पेज पर कम्यूनिकेशन ऐप्लिकेशन के लिए, रिपोर्ट शॉर्टकट के इस्तेमाल की जानकारी देखें. उदाहरण के लिए,actions.intent.SEND_MESSAGEसुविधा के साथShortcutInfoCompat.Builder#addCapabilityBindingके ज़रिए शॉर्टकट में क्षमता बाइंडिंग तय करके, उपयोगकर्ता के भेजे गए मैसेज के इस्तेमाल की रिपोर्ट पाएं.Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
अगर उपयोगकर्ता किसी संपर्क को मिटाता है, तो
removeLongLivedShortcutका इस्तेमाल करें. शॉर्टकट को हटाने का यह सबसे अच्छा तरीका है. इससे कोई फ़र्क़ नहीं पड़ता कि सिस्टम सेवाओं ने इसे कैश मेमोरी में सेव किया है या नहीं. नीचे दिए गए कोड स्निपेट में, ऐसा करने का एक उदाहरण दिखाया गया है.Kotlin
val deleteShortcutId = "..." ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))
Java
String deleteShortcutId = "..."; ShortcutManagerCompat.removeLongLivedShortcuts( myContext, Arrays.asList(deleteShortcutId));
सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोगों या ग्रुप की रैंकिंग को बेहतर बनाना
Android की शेयरशीट में, सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोगों या ग्रुप की संख्या तय होती है. इन सुझावों को रैंक के हिसाब से क्रम में लगाया जाता है. शॉर्टकट की रैंकिंग को बेहतर बनाने के लिए, ये काम किए जा सकते हैं:
- पक्का करें कि सभी
shortcutIdsयूनीक हों और उन्हें अलग-अलग टारगेट के लिए फिर से इस्तेमाल न किया गया हो. setLongLived(true)को कॉल करके पक्का करें कि शॉर्टकट लंबे समय तक काम करे.- बातचीत से जुड़े शॉर्टकट के लिए, भेजे गए और पाए गए मैसेज के लिए शॉर्टकट के इस्तेमाल की रिपोर्ट करें. इसके लिए,
ShortcutManagerCompat.pushDynamicShortcutके ज़रिए, उनसे जुड़े शॉर्टकट फिर से पब्लिश करें. ज़्यादा जानकारी के लिए, इस पेज पर कम्यूनिकेशन ऐप्लिकेशन के लिए शॉर्टकट के इस्तेमाल की रिपोर्ट करना लेख पढ़ें. - डायरेक्ट शेयर के लिए, ऐसे टारगेट न दें जो काम के न हों या पुराने हों. उदाहरण के लिए, ऐसे संपर्क जिन्हें उपयोगकर्ता ने पिछले 30 दिनों में मैसेज नहीं भेजा है.
- एसएमएस ऐप्लिकेशन के लिए, छोटे कोड या बातचीत के लिए शॉर्टकट उपलब्ध कराने से बचें. इन कोड या बातचीत को संभावित स्पैम के तौर पर पहचाना गया है. उपयोगकर्ता, उन बातचीत में शेयर नहीं करेंगे.
- शॉर्टकट को सही
mimeTypeएट्रिब्यूट के साथ असोसिएट करने के लिए,setCategories()पर कॉल करें. उदाहरण के लिए, अगर कोई संपर्क आरसीएस या मल्टीमीडिया मैसेज की सुविधा इस्तेमाल नहीं करता है, तो एसएमएस ऐप्लिकेशन के लिए, उस संपर्क से जुड़े शॉर्टकट को टेक्स्ट के अलावा अन्य MIME टाइप, जैसे किimage/*औरvideo/*से नहीं जोड़ा जाएगा. - किसी बातचीत के लिए, डाइनैमिक शॉर्टकट को पुश करने और उसके इस्तेमाल की जानकारी देने के बाद, शॉर्टकट आईडी को न बदलें. इससे रैंकिंग के लिए, इस्तेमाल से जुड़े डेटा को बनाए रखने में मदद मिलती है.
अगर कोई उपयोगकर्ता, डायरेक्ट शेयर के किसी टारगेट पर टैप करता है, तो आपका ऐप्लिकेशन उसे ऐसे यूज़र इंटरफ़ेस (यूआई) पर ले जाना चाहिए जहां वह टारगेट के विषय पर सीधे तौर पर कोई कार्रवाई कर सके. उपयोगकर्ता को एक से ज़्यादा मतलब वाले शब्दों को समझने में मदद करने वाला यूज़र इंटरफ़ेस (यूआई) न दिखाएं. साथ ही, उन्हें टैप किए गए टारगेट से जुड़े यूज़र इंटरफ़ेस (यूआई) में न रखें. उदाहरण के लिए, मैसेजिंग ऐप्लिकेशन में, डायरेक्ट शेयर करने की सुविधा वाले टारगेट पर टैप करने से, उपयोगकर्ता को उस व्यक्ति के साथ बातचीत वाले व्यू पर ले जाया जाता है जिसे उसने चुना है. कीबोर्ड दिखता है और शेयर किए गए डेटा के साथ मैसेज पहले से भरा होता है.
Sharing Shortcuts API
Android 10 (एपीआई लेवल 29) से, ShortcutInfo.Builder में ये तरीके और सुधार जोड़े गए हैं. इनसे शेयर टारगेट के बारे में ज़्यादा जानकारी मिलती है:
setCategories()- Android 10 से, कैटगरी का इस्तेमाल उन शॉर्टकट को फ़िल्टर करने के लिए भी किया जाता है जो शेयर करने के इंटेंट या कार्रवाइयों को हैंडल कर सकते हैं. ज़्यादा जानकारी के लिए, शेयर टारगेट का एलान करना लेख पढ़ें. यह फ़ील्ड उन शॉर्टकट के लिए ज़रूरी है जिन्हें शेयर टारगेट के तौर पर इस्तेमाल किया जाना है.
setLongLived()इससे यह तय होता है कि किसी शॉर्टकट को अनपब्लिश किए जाने या ऐप्लिकेशन के ज़रिए उसे छिपाए जाने (डाइनैमिक या पिन किए गए शॉर्टकट के तौर पर) पर, वह मान्य है या नहीं. अगर कोई शॉर्टकट लंबे समय तक इस्तेमाल किया जाता है, तो उसे कई सिस्टम सेवाओं से कैश मेमोरी में सेव किया जा सकता है. ऐसा तब भी किया जा सकता है, जब उसे डाइनैमिक शॉर्टकट के तौर पर अनपब्लिश कर दिया गया हो.
शॉर्टकट को लंबे समय तक इस्तेमाल करने से, उसकी रैंकिंग बेहतर हो सकती है. ज़्यादा जानकारी के लिए, बेहतर रैंकिंग पाएं लेख पढ़ें.
setShortLabel(),setLongLabel()किसी व्यक्ति के लिए शॉर्टकट पब्लिश करते समय, कृपया उसका पूरा नाम
setLongLabel()में और कोई छोटा नाम, जैसे कि उपनाम या पहला नाम,setShortLabel()में शामिल करें.
GitHub पर शेयर करने के शॉर्टकट पब्लिश करने का उदाहरण देखें.
शॉर्टकट की इमेज उपलब्ध कराना
शेयर करने का शॉर्टकट बनाने के लिए, आपको setIcon() के ज़रिए एक इमेज जोड़नी होगी.
शेयर करने के शॉर्टकट, सिस्टम के सभी प्लैटफ़ॉर्म पर दिख सकते हैं. साथ ही, इन्हें फिर से व्यवस्थित किया जा सकता है.
इसके अलावा, Android के वर्शन 7, 8 या 9 (एपीआई लेवल 25, 26, 27, और 28) पर काम करने वाले कुछ डिवाइसों पर, बैकग्राउंड के बिना सिर्फ़ बिटमैप वाले आइकॉन दिख सकते हैं. इससे कंट्रास्ट में काफ़ी कमी आ जाती है. यह पक्का करने के लिए कि आपका शॉर्टकट वैसा ही दिखे जैसा आपने तय किया है, IconCompat.createWithAdaptiveBitmap() का इस्तेमाल करके अडैप्टिव बिटमैप उपलब्ध कराएं.
पक्का करें कि अडैप्टिव बिटमैप, अडैप्टिव आइकॉन के लिए तय किए गए दिशा-निर्देशों और डाइमेंशन का पालन करते हों. ऐसा करने का सबसे सामान्य तरीका यह है कि स्क्वेयर बिटमैप को 72x72 dp पर स्केल किया जाए और उसे 108x108 dp के पारदर्शी कैनवस के बीच में रखा जाए. अगर आपके आइकॉन में पारदर्शी हिस्से शामिल हैं, तो आपको बैकग्राउंड का रंग शामिल करना होगा. ऐसा न करने पर, पारदर्शी हिस्से काले दिखेंगे.
किसी खास शेप में मास्क की गई इमेज न दें. उदाहरण के लिए, Android 10 (एपीआई लेवल 29) से पहले, डायरेक्ट शेयर ChooserTargetके लिए उपयोगकर्ता के अवतार उपलब्ध कराना आम बात थी. इन अवतारों को एक सर्कल में मास्क किया जाता था. Android 10 में, Android की शेयरशीट और अन्य सिस्टम प्लैटफ़ॉर्म अब शॉर्टकट इमेज को आकार देते हैं और उन्हें थीम के हिसाब से बनाते हैं.
ShortcutManagerCompat के ज़रिए शेयर करने के शॉर्टकट उपलब्ध कराने का पसंदीदा तरीका. इससे, बैककंपैट डायरेक्ट शेयर ChooserTarget ऑब्जेक्ट अपने-आप आपके लिए सर्कल में बदल जाते हैं.
शेयर करने के लिए टारगेट का एलान करना
शेयर टारगेट को ऐप्लिकेशन की रिसॉर्स फ़ाइल में एलान किया जाना चाहिए. यह स्टैटिक शॉर्टकट की परिभाषाओं की तरह ही होता है. शेयर करने के टारगेट की परिभाषाओं को, रिसॉर्स फ़ाइल में मौजूद <shortcuts> रूट एलिमेंट में जोड़ें. साथ ही, अन्य स्टैटिक शॉर्टकट की परिभाषाएं भी जोड़ें. हर <share-targets> एलिमेंट में, शेयर किए गए डेटा टाइप, मैचिंग कैटगरी, और शेयर करने के इंटेंट को हैंडल करने वाली टारगेट क्लास के बारे में जानकारी होती है. एक्सएमएल कोड कुछ ऐसा दिखता है:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>
शेयर टारगेट में मौजूद डेटा एलिमेंट, इंटेंट फ़िल्टर में मौजूद डेटा स्पेसिफ़िकेशन जैसा होता है. हर शेयर टारगेट में कई कैटगरी हो सकती हैं. इनका इस्तेमाल सिर्फ़ किसी ऐप्लिकेशन के पब्लिश किए गए शॉर्टकट को उसके शेयर टारगेट की परिभाषाओं से मैच करने के लिए किया जाता है. कैटगरी में, ऐप्लिकेशन के हिसाब से तय की गई कोई भी वैल्यू हो सकती है.
अगर उपयोगकर्ता, Android Sharesheet में शेयर करने का ऐसा शॉर्टकट चुनता है जो ऊपर दिए गए उदाहरण के टारगेट-शेयर से मेल खाता है, तो ऐप्लिकेशन को शेयर करने का यह इंटेंट मिलेगा:
Action: Intent.ACTION_SEND ComponentName: {com.example.android.sharingshortcuts / com.example.android.sharingshortcuts.SendMessageActivity} Data: Uri to the shared content EXTRA_SHORTCUT_ID: <ID of the selected shortcut>
अगर उपयोगकर्ता, लॉन्चर शॉर्टकट से शेयर टारगेट खोलता है, तो ऐप्लिकेशन को वह इंटेंट मिलेगा जो ShortcutManagerCompat में शेयर करने का शॉर्टकट जोड़ते समय बनाया गया था.
यह एक अलग इंटेंट है, इसलिए Intent.EXTRA_SHORTCUT_ID उपलब्ध नहीं होगा. अगर आपको इसकी ज़रूरत है, तो आपको आईडी मैन्युअल तरीके से पास करना होगा.
कम्यूनिकेशन ऐप्लिकेशन के लिए शॉर्टकट के इस्तेमाल की रिपोर्ट करना
अगर आपको कोई कम्यूनिकेशन ऐप्लिकेशन डेवलप करना है, तो Android Sharesheet में अपनी रैंकिंग को बेहतर बनाया जा सकता है. इसके लिए, भेजे गए और पाए गए, दोनों तरह के मैसेज के इस्तेमाल की जानकारी दें.
इसके लिए, ShortcutManagerCompat.pushDynamicShortcut के ज़रिए, संपर्क की जानकारी देने वाले बातचीत के शॉर्टकट को फिर से पब्लिश करें.
शॉर्टकट इस्तेमाल करने और सुविधाओं को बाइंड करने की सुविधा, Android 5.0 (एपीआई 21) के साथ काम करती है.
आउटगोइंग मैसेज के लिए शॉर्टकट के इस्तेमाल की जानकारी देना
उपयोगकर्ता की ओर से भेजे गए मैसेज के इस्तेमाल की रिपोर्टिंग, मैसेज बनाने के बाद "भेजें" बटन पर क्लिक करने के जैसी ही होती है.
इस्तेमाल की रिपोर्टिंग को ट्रिगर करने के लिए, शॉर्टकट में actions.intent.SEND_MESSAGE सुविधा के साथ ShortcutInfoCompat.Builder#addCapabilityBinding के ज़रिए, क्षमता बाइंडिंग तय करें.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
अगर भेजा जा रहा मैसेज किसी ग्रुप चैट के लिए है, तो आपको Audience पैरामीटर की वैल्यू को भी जोड़ना होगा, क्योंकि recipient टाइप, सुविधा से जुड़ा होता है.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
आने वाले मैसेज के लिए शॉर्टकट इस्तेमाल करने की शिकायत करना
जब उपयोगकर्ता को एसएमएस, चैट मैसेज, ईमेल या सूचनाएं मिलती हैं, तब इस्तेमाल की जानकारी देने वाली रिपोर्ट को ट्रिगर करने के लिए, आपको शॉर्टकट में actions.intent.RECEIVE_MESSAGE सुविधा के साथ ShortcutInfoCompat.Builder#addCapabilityBinding के ज़रिए, सुविधा के बाइंडिंग भी तय करने होंगे.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
अगर आने वाला मैसेज किसी ग्रुप चैट से है, तो आपको Audience पैरामीटर की वैल्यू भी जोड़नी होगी, क्योंकि sender टाइप, सुविधा से जुड़ा होता है.
Kotlin
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
Java
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
Sharing Shortcuts और ChooserTargets, दोनों के लिए AndroidX का इस्तेमाल करना
AndroidX कंपैटिबिलिटी लाइब्रेरी के साथ काम करने के लिए, ऐप्लिकेशन के मेनिफ़ेस्ट में meta-data chooser-target-service और intent-filters सेट होना चाहिए. ChooserTargetService Direct Share API का मौजूदा वर्शन देखें.
इस सेवा के बारे में, कंपैटिबिलिटी लाइब्रेरी में पहले से ही बताया गया है. इसलिए, उपयोगकर्ता को ऐप्लिकेशन के मेनिफ़ेस्ट में इस सेवा के बारे में बताने की ज़रूरत नहीं है. हालांकि, शेयर करने की गतिविधि से सेवा तक पहुंचने वाले लिंक को, चुनने के लिए उपलब्ध सेवा देने वाली कंपनी के तौर पर ध्यान में रखना होगा.
यहां दिए गए उदाहरण में, ChooserTargetService को androidx.core.content.pm.ChooserTargetServiceCompat के तौर पर लागू किया गया है. इसे AndroidX में पहले ही तय किया जा चुका है:
<activity android:name=".SendMessageActivity" android:label="@string/app_name" android:theme="@style/SharingShortcutsDialogTheme"> <!-- This activity can respond to Intents of type SEND --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <!-- Only needed if you import the sharetarget AndroidX library that provides backwards compatibility with the old DirectShare API. The activity that receives the Sharing Shortcut intent needs to be taken into account with this chooser target provider. --> <meta-data android:name="android.service.chooser.chooser_target_service" android:value="androidx.sharetarget.ChooserTargetServiceCompat" /> </activity>
शेयर करने के शॉर्टकट के बारे में अक्सर पूछे जाने वाले सवाल
शॉर्टकट के इस्तेमाल से जुड़ा डेटा कैसे सेव किया जाता है और क्या यह डिवाइस से बाहर जाता है?
शॉर्टकट को पूरी तरह से डिवाइस पर सेव किया जाता है. ये सिस्टम डेटा डायरेक्ट्री में एन्क्रिप्ट (सुरक्षित) किए गए डिस्क पार्टीशन में सेव होते हैं. शॉर्टकट में मौजूद जानकारी, जैसे कि आइकॉन, इंटेंट, और लोगों और संसाधनों के नाम सिर्फ़ सिस्टम सेवाओं और शॉर्टकट पब्लिश करने वाले ऐप्लिकेशन के लिए उपलब्ध होते हैं.
Direct Share की सुविधा कब लॉन्च हुई थी?
हमने Android 6.0 (एपीआई लेवल 23) में Direct Share सुविधा लॉन्च की थी. इससे ऐप्लिकेशन, ChooserTargetService के ज़रिए ChooserTarget ऑब्जेक्ट उपलब्ध करा सकते हैं. नतीजे, मांग के हिसाब से तुरंत हासिल किए गए थे. इस वजह से, टारगेट लोड होने में ज़्यादा समय लगा.
Android 10 (एपीआई लेवल 29) में, हमने ChooserTargetService Direct
Share API को नए Sharing Shortcuts API से बदल दिया है. Sharing Shortcuts API, ऐप्लिकेशन को सीधे तौर पर शेयर करने के टारगेट को पहले से पब्लिश करने की अनुमति देता है. इससे, मांग के हिसाब से नतीजे पाने के बजाय, नतीजे तुरंत मिल जाते हैं. इससे ShareSheet तैयार करते समय, Direct Share के टारगेट को तेज़ी से वापस पाने की प्रोसेस में मदद मिली. ChooserTargetService सीधे तौर पर शेयर करने की सुविधा
काम करती रहेगी. हालांकि, सिस्टम इस तरीके से उपलब्ध कराए गए टारगेट को, Sharing Shortcuts API का इस्तेमाल करने वाले किसी भी टारगेट की तुलना में कम रैंक देता है.
Android 11 (एपीआई लेवल 30) में ChooserTargetService सेवा बंद कर दी गई है. इसलिए, डायरेक्ट शेयर के टारगेट उपलब्ध कराने का सिर्फ़ एक तरीका है: Sharing Shortcuts API.
शेयर टारगेट के लिए पब्लिश किए गए शॉर्टकट, लॉन्चर शॉर्टकट से कैसे अलग होते हैं? लॉन्चर शॉर्टकट, ऐप्लिकेशन के आइकॉन को लॉन्चर में दबाकर रखने पर इस्तेमाल किए जाते हैं.
"शेयर टारगेट" के लिए पब्लिश किए गए सभी शॉर्टकट, लॉन्चर शॉर्टकट भी होते हैं. ये शॉर्टकट, ऐप्लिकेशन के आइकॉन को देर तक दबाने पर मेन्यू में दिखेंगे. किसी गतिविधि के लिए शॉर्टकट की संख्या की सीमा, किसी ऐप्लिकेशन के पब्लिश किए गए शॉर्टकट की कुल संख्या पर भी लागू होती है. इसमें शेयर टारगेट और लेगसी लॉन्चर शॉर्टकट, दोनों शामिल हैं.
शेयर करने के शॉर्टकट की संख्या के बारे में क्या दिशा-निर्देश हैं.
शेयर करने के शॉर्टकट की संख्या, getMaxShortcutCountPerActivity(android.content.Context) के ज़रिए उपलब्ध डाइनैमिक शॉर्टकट की संख्या के बराबर होती है. कोई भी व्यक्ति, तय सीमा तक शॉर्टकट पब्लिश कर सकता है. हालांकि, उसे यह ध्यान रखना होगा कि शेयर किए गए शॉर्टकट, ऐप्लिकेशन लॉन्चर को देर तक दबाकर रखने पर और शेयर शीट में दिख सकते हैं. ज़्यादातर ऐप्लिकेशन लॉन्चर पर, दबाकर रखने पर पोर्ट्रेट मोड में ज़्यादा से ज़्यादा चार या पांच शॉर्टकट दिखते हैं. वहीं, लैंडस्केप मोड में आठ शॉर्टकट दिखते हैं. शॉर्टकट शेयर करने के बारे में ज़्यादा जानकारी और दिशा-निर्देश पाने के लिए, अक्सर पूछे जाने वाले ये सवाल देखें.