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

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

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

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

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

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

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 को नए Shared Shortcuts API से बदल दिया. Sharing Shortcuts API, ऐप्लिकेशन को सीधे शेयर करने के टारगेट को पहले से पब्लिश करने की सुविधा देता है. इससे, ऐप्लिकेशन को मांग पर नतीजे पाने के बजाय, पहले से ही नतीजे मिल जाते हैं. इससे, शेयरशीट तैयार करते समय, डायरेक्ट शेयर के टारगेट को तुरंत वापस पाने की प्रोसेस तेज़ हो गई. ChooserTargetServiceडायरेक्ट शेयर करने का तरीका काम करता रहेगा. हालांकि, सिस्टम इस तरह से दिए गए टारगेट को, शेयर करने के लिए शॉर्टकट एपीआई का इस्तेमाल करने वाले किसी भी टारगेट से नीचे रखता है.

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

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

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

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

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