डायरेक्ट शेयर टारगेट दें

पहली इमेज: शेयरशीट में डायरेक्ट शेयर की सुविधा वाली लाइन, जैसा कि 1
में दिखाया गया है

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

ShortcutManagerCompat एक AndroidX API है. यह शेयर करने के शॉर्टकट उपलब्ध कराता है. साथ ही, यह बहिष्कृत ChooserTargetService API के साथ काम करता है. शेयर करने के शॉर्टकट और ChooserTargets, दोनों को पब्लिश करने का यह सबसे सही तरीका है. निर्देशों के लिए, इस पेज पर Sharing Shortcuts और ChooserTargets, दोनों उपलब्ध कराने के लिए AndroidX का इस्तेमाल करना लेख पढ़ें.

सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोगों या ग्रुप को पब्लिश करना

शेयरशीट में मौजूद 'सीधे तौर पर शेयर करें' लाइन में, सिर्फ़ Sharing Shortcuts API से मिले डाइनैमिक शॉर्टकट दिखते हैं. Direct Share के टारगेट पब्लिश करने के लिए, यह तरीका अपनाएं.

  1. अपने ऐप्लिकेशन की एक्सएमएल रिसॉर्स फ़ाइल में, 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>
    
  2. जब आपका ऐप्लिकेशन शुरू हो, तब 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);
  3. अगर आपको कोई कम्यूनिकेशन ऐप्लिकेशन डेवलप करना है, तो शॉर्टकट के इस्तेमाल की जानकारी तुरंत दें. इसके लिए, 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);
  4. अगर उपयोगकर्ता किसी संपर्क को मिटाता है, तो 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/* से नहीं जोड़ना चाहिए.
  • किसी बातचीत के लिए, डाइनैमिक शॉर्टकट को पुश करने और उसके इस्तेमाल की जानकारी देने के बाद, शॉर्टकट आईडी को न बदलें. इससे रैंकिंग के लिए, इस्तेमाल से जुड़े डेटा को बनाए रखने में मदद मिलती है.

अगर उपयोगकर्ता, डायरेक्ट शेयर के किसी टारगेट पर टैप करता है, तो आपका ऐप्लिकेशन उसे ऐसे यूज़र इंटरफ़ेस (यूआई) पर ले जाना चाहिए जहां वह टारगेट के विषय पर सीधे तौर पर कोई कार्रवाई कर सके. उपयोगकर्ता को एक से ज़्यादा मतलब वाले शब्दों को समझने में मदद करने वाला यूज़र इंटरफ़ेस (यूआई) न दिखाएं. साथ ही, उन्हें टैप किए गए टारगेट से जुड़े यूज़र इंटरफ़ेस (यूआई) में न रखें. उदाहरण के लिए, मैसेजिंग ऐप्लिकेशन में, Direct Share टारगेट पर टैप करने से उपयोगकर्ता को उस व्यक्ति के साथ बातचीत वाले व्यू पर ले जाया जाता है जिसे उसने चुना है. कीबोर्ड दिखता है और शेयर किए गए डेटा के साथ मैसेज पहले से भरा होता है.

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 डीपी पर स्केल किया जाए और उसे 108x108 डीपी के पारदर्शी कैनवस के बीच में रखा जाए. अगर आपके आइकॉन में पारदर्शी हिस्से शामिल हैं, तो आपको बैकग्राउंड का रंग शामिल करना होगा. ऐसा न करने पर, पारदर्शी हिस्से काले दिखेंगे.

किसी खास शेप में मास्क की गई इमेज न दें. उदाहरण के लिए, 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 की शेयरशीट में शेयर करने का ऐसा शॉर्टकट चुनता है जो ऊपर दिए गए उदाहरण के टारगेट-शेयर से मेल खाता है, तो ऐप्लिकेशन को शेयर करने का यह इंटेंट मिलेगा:

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);

आने वाले मैसेज के लिए शॉर्टकट इस्तेमाल करने की जानकारी देना

जब उपयोगकर्ता को एसएमएस, चैट मैसेज, ईमेल या सूचनाएं मिलती हैं, तब इस्तेमाल की जानकारी देने वाली रिपोर्ट को ट्रिगर करने के लिए, आपको शॉर्टकट में ShortcutInfoCompat.Builder#addCapabilityBinding के ज़रिए actions.intent.RECEIVE_MESSAGE सुविधा के साथ-साथ, सुविधा बाइंडिंग भी तय करनी होंगी.

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);

AndroidX का इस्तेमाल करके, शेयर करने के शॉर्टकट और ChooserTargets, दोनों उपलब्ध कराना

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) के ज़रिए उपलब्ध डाइनैमिक शॉर्टकट की संख्या के बराबर होती है. कोई भी व्यक्ति, तय सीमा तक शॉर्टकट पब्लिश कर सकता है. हालांकि, उसे यह ध्यान रखना होगा कि शेयर किए गए शॉर्टकट, ऐप्लिकेशन लॉन्चर को देर तक दबाकर रखने पर और शेयर शीट में दिख सकते हैं. ज़्यादातर ऐप्लिकेशन लॉन्चर पर, दबाकर रखने पर पोर्ट्रेट मोड में ज़्यादा से ज़्यादा चार या पांच शॉर्टकट दिखते हैं. वहीं, लैंडस्केप मोड में आठ शॉर्टकट दिखते हैं. शॉर्टकट शेयर करने के बारे में ज़्यादा जानकारी और दिशा-निर्देश पाने के लिए, यह अक्सर पूछा जाने वाला सवाल देखें.