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

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

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

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

डायरेक्ट शेयर टारगेट पब्लिश करना

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

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

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

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

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

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

AndroidX के साथ काम करने वाली लाइब्रेरी का इस्तेमाल करने के लिए, ऐप्लिकेशन के मेनिफ़ेस्ट में मेटा-डेटा चुनने वाला-टारगेट-सेवा और इंटेंट-फ़िल्टर सेट होना चाहिए. मौजूदा 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) में डायरेक्ट शेयर की सुविधा शुरू की थी, ताकि ऐप्लिकेशन ChooserTargetService की मदद से ChooserTarget ऑब्जेक्ट उपलब्ध करा सकें. नतीजे, मांग पर रिएक्टिव तरीके से वापस पा लिए गए थे. इस वजह से, टारगेट लोड होने में ज़्यादा समय लगा.

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

Android 11 (एपीआई लेवल 30) में ChooserTargetService सेवा को बंद कर दिया गया है. साथ ही, डायरेक्ट शेयर के टारगेट देने का एकमात्र तरीका, शेयर करने के लिए शॉर्टकट एपीआई है.

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

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

शॉर्टकट शेयर करने की संख्या के बारे में क्या दिशा-निर्देश हैं?

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