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

पहली इमेज: Sharesheet में, सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन. इसे 1

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

ShortcutManagerCompat एक AndroidX एपीआई है, जो शेयर करने के शॉर्टकट उपलब्ध कराता है. यह, बंद किए जा चुके ChooserTargetService एपीआई के साथ भी काम करता है. शेयर करने के शॉर्टकट और ChooserTargets, दोनों को पब्लिश करने का यह सबसे अच्छा तरीका है. निर्देशों के लिए, इस पेज पर AndroidX का इस्तेमाल करके, शेयर करने के शॉर्टकट और ChooserTargets, दोनों उपलब्ध कराना लेख पढ़ें.

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

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

  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 के ज़रिए शॉर्टकट के इस्तेमाल की रिपोर्ट तुरंत करें. ज़्यादा जानकारी के लिए, इस पेज पर बातचीत करने वाले ऐप्लिकेशन के लिए, शॉर्टकट के इस्तेमाल की रिपोर्ट करना लेख पढ़ें. उदाहरण के लिए, उपयोगकर्ता की ओर से भेजे गए मैसेज के इस्तेमाल की रिपोर्ट करने के लिए, शॉर्टकट में क्षमता के बाइंडिंग की जानकारी दें ShortcutInfoCompat.Builder#addCapabilityBinding सुविधा के साथ.actions.intent.SEND_MESSAGE

    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 Sharesheet में, सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन की संख्या तय होती है. ये सुझाव, रैंक के हिसाब से क्रम में लगाए जाते हैं. यहां दिए गए तरीके अपनाकर, अपने शॉर्टकट की रैंकिंग बेहतर बनाई जा सकती है:

  • पक्का करें कि सभी shortcutIds यूनीक हों और अलग-अलग टारगेट के लिए इनका दोबारा इस्तेमाल न किया जाए.
  • setLongLived(true) को कॉल करके, पक्का करें कि शॉर्टकट लंबे समय तक उपलब्ध रहे.
  • बातचीत से जुड़े शॉर्टकट के लिए, भेजे गए और मिले मैसेज के लिए शॉर्टकट के इस्तेमाल की रिपोर्ट करें. इसके लिए, उनसे जुड़े शॉर्टकट को फिर से पब्लिश करें ShortcutManagerCompat.pushDynamicShortcut. ज़्यादा जानकारी के लिए, इस पेज पर बातचीत करने वाले ऐप्लिकेशन के लिए, शॉर्टकट के इस्तेमाल की रिपोर्ट करना लेख पढ़ें.
  • सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन के लिए, काम के न होने वाले या पुरानी जानकारी वाले टारगेट न दें. उदाहरण के लिए, ऐसे संपर्क जिनसे उपयोगकर्ता ने पिछले 30 दिनों में मैसेज सेवा का इस्तेमाल नहीं किया है.
  • एसएमएस ऐप्लिकेशन के लिए, शॉर्ट कोड या स्पैम के तौर पर पहचाने गए बातचीत के लिए शॉर्टकट न दें. उपयोगकर्ता, इन बातचीत को शेयर नहीं करेंगे.
  • शॉर्टकट को सही एट्रिब्यूट से जोड़ने के लिए, setCategories() को कॉल करें.mimeType उदाहरण के लिए, एसएमएस ऐप्लिकेशन के लिए, अगर संपर्क आरसीएस या एमएमएस की सुविधा वाला नहीं है, तो उससे जुड़े शॉर्टकट को, टेक्स्ट के अलावा अन्य MIME टाइप से न जोड़ें. जैसे, image/* और video/*.
  • किसी बातचीत के लिए, डाइनैमिक शॉर्टकट पुश करने और उसके इस्तेमाल की रिपोर्ट करने के बाद, शॉर्टकट आईडी न बदलें. इससे रैंकिंग के लिए, इस्तेमाल का डेटा सेव रहता है.

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

शेयर करने के शॉर्टकट का एपीआई

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 Sharesheet और सिस्टम के अन्य प्लैटफ़ॉर्म अब शॉर्टकट की इमेज को आकार देते हैं और थीम के मुताबिक बनाते हैं. शेयर करने के शॉर्टकट उपलब्ध कराने का सबसे अच्छा तरीका यह है कि यह आपके लिए, सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन के पुराने वर्शन के ChooserTarget ऑब्जेक्ट को सर्कल में बदल देता है.ShortcutManagerCompat

शेयर करने के टारगेट के बारे में बताना

शेयर करने के टारगेट के बारे में, ऐप्लिकेशन की रिसॉर्स फ़ाइल में बताना ज़रूरी है. यह ठीक वैसा ही है जैसे स्टैटिक शॉर्टकट की परिभाषाएं बताई जाती हैं. रिसॉर्स फ़ाइल में, <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) के साथ भी काम करते हैं.

भेजे गए मैसेज के लिए, शॉर्टकट के इस्तेमाल की रिपोर्ट करना

उपयोगकर्ता की ओर से भेजे गए मैसेज के इस्तेमाल की रिपोर्ट करना, मैसेज बनाने के बाद "भेजें" बटन पर क्लिक करने जैसा है.

इस्तेमाल की रिपोर्टिंग को ट्रिगर करने के लिए, शॉर्टकट में, क्षमता के बाइंडिंग की जानकारी देंShortcutInfoCompat.Builder#addCapabilityBinding सुविधा के साथ.actions.intent.SEND_MESSAGE

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 कंपैटिबिलिटी लाइब्रेरी के साथ काम करने के लिए, ऐप्लिकेशन के मेनिफ़ेस्ट में, मेटा-डेटा chooser-target-service और इंटेंट-फ़िल्टर सेट होना चाहिए. सीधे तौर पर शेयर करने के लिए, मौजूदा ChooserTargetService एपीआई देखें.

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

यहां दिए गए उदाहरण में, 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>

शेयर करने के शॉर्टकट से जुड़े अक्सर पूछे जाने वाले सवाल

शॉर्टकट के इस्तेमाल का डेटा कैसे सेव किया जाता है और क्या यह डिवाइस से बाहर जाता है?

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

सीधे तौर पर शेयर करने की सुविधा का इतिहास क्या है?

हमने Android 6.0 (एपीआई लेवल 23) में, सीधे तौर पर शेयर करने की सुविधा शुरू की थी. इससे ऐप्लिकेशन, ChooserTarget ऑब्जेक्ट, ChooserTargetService के ज़रिए उपलब्ध करा सकते हैं. ज़रूरत पड़ने पर, नतीजे तुरंत वापस पाए जाते थे. इस वजह से, टारगेट लोड होने में ज़्यादा समय लगता था.

Android 10 (एपीआई लेवल 29) में, हमने सीधे तौर पर शेयर करने के लिए, ChooserTargetService के एपीआई की जगह, शेयर करने के शॉर्टकट का नया एपीआई इस्तेमाल किया. शेयर करने के शॉर्टकट के एपीआई की मदद से, ऐप्लिकेशन सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन को पहले से पब्लिश कर सकते हैं. इसके लिए, ज़रूरत पड़ने पर नतीजे तुरंत वापस पाने की ज़रूरत नहीं होती. इससे, ShareSheet तैयार करते समय, सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन को वापस पाने की प्रोसेस तेज़ी से हुई. सीधे तौर पर शेयर करने के लिए, ChooserTargetService का तरीका काम करता रहेगा. हालांकि, सिस्टम, इस तरीके से उपलब्ध कराए गए टारगेट को, शेयर करने के शॉर्टकट के एपीआई का इस्तेमाल करने वाले किसी भी टारगेट से कम रैंक देता है.

Android 11 (एपीआई लेवल 30) में, ChooserTargetService सेवा को बंद कर दिया गया है. सीधे तौर पर शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन उपलब्ध कराने का सिर्फ़ एक तरीका है: शेयर करने के शॉर्टकट का एपीआई.

शेयर करने के टारगेट के लिए पब्लिश किए गए शॉर्टकट, लॉन्चर के शॉर्टकट से कैसे अलग होते हैं? लॉन्चर में ऐप्लिकेशन के आइकॉन को दबाकर रखने पर, शॉर्टकट का आम तौर पर इस्तेमाल किया जाता है.

"शेयर करने के टारगेट" के लिए पब्लिश किए गए सभी शॉर्टकट, लॉन्चर के शॉर्टकट भी होते हैं. ये आपके ऐप्लिकेशन के आइकॉन को दबाकर रखने पर, मेन्यू में दिखेंगे. हर गतिविधि के लिए शॉर्टकट की संख्या की तय सीमा, ऐप्लिकेशन के पब्लिश किए जा रहे शॉर्टकट की कुल संख्या पर भी लागू होती है. इसमें, शेयर करने के टारगेट और लॉन्चर के पुराने शॉर्टकट, दोनों शामिल हैं.

शेयर करने के कितने शॉर्टकट पब्लिश किए जाने चाहिए?

शेयर करने के शॉर्टकट की संख्या, डाइनैमिक शॉर्टकट की तय सीमा के बराबर होती है. यह सीमा, getMaxShortcutCountPerActivity(android.content.Context) के ज़रिए तय की जाती है. इस सीमा तक, कोई भी संख्या पब्लिश की जा सकती है. हालांकि, यह ध्यान रखना ज़रूरी है कि शेयर करने के शॉर्टकट, ऐप्लिकेशन लॉन्चर में आइकॉन को दबाकर रखने पर और शेयर शीट में दिख सकते हैं. ज़्यादातर ऐप्लिकेशन लॉन्चर, पोर्ट्रेट मोड में चार या पांच और लैंडस्केप मोड में आठ शॉर्टकट दिखाते हैं. ज़्यादा जानकारी और शेयर करने के शॉर्टकट के बारे में दिशा-निर्देश पाने के लिए, यह अक्सर पूछे जाने वाले सवाल देखें.