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

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

सीधे तौर पर कॉन्टेंट शेयर करने के लिए चुने गए लोगों या ग्रुप की लाइन का इस्तेमाल करके, अन्य ऐप्लिकेशन के उपयोगकर्ताओं के लिए, यूआरएल, इमेज या अन्य तरह का डेटा आपके ऐप्लिकेशन के साथ शेयर करना आसान और तेज़ बनाया जा सकता है. सीधे तौर पर कॉन्टेंट शेयर करने की सुविधा, 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 उदाहरण के लिए, एसएमएस ऐप्लिकेशन के लिए, अगर संपर्क RCS या MMS की सुविधा वाला नहीं है, तो उससे जुड़े शॉर्टकट को, image/* और video/* जैसे नॉन-टेक्स्ट MIME टाइप से न जोड़ें.
  • किसी बातचीत के लिए, डाइनैमिक शॉर्टकट पुश करने और उसके इस्तेमाल की रिपोर्ट करने के बाद, शॉर्टकट आईडी न बदलें. इससे रैंकिंग के लिए, इस्तेमाल का डेटा सेव रहता है.

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

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

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

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

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

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

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

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