अन्य ऐप्लिकेशन को आसान डेटा भेजें

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

Android, उपयोगकर्ताओं को ऐप्लिकेशन के बीच डेटा शेयर करने के दो तरीके उपलब्ध कराता है:

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

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

Android शेयरशीट का इस्तेमाल क्यों करना चाहिए

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

Android Sharesheet की मदद से, उपयोगकर्ता एक ही टैप में सही व्यक्ति के साथ जानकारी शेयर कर सकते हैं. साथ ही, उन्हें काम के ऐप्लिकेशन के सुझाव भी मिलते हैं. शेयरशीट, कस्टम समाधानों के लिए उपलब्ध नहीं टारगेट का सुझाव दे सकती है. साथ ही, यह लगातार रैंकिंग का इस्तेमाल करती है. ऐसा इसलिए है, क्योंकि शेयरशीट में ऐप्लिकेशन और उपयोगकर्ता की गतिविधि की ऐसी जानकारी शामिल की जा सकती है जो सिर्फ़ सिस्टम के लिए उपलब्ध होती है.

Android Sharesheet में डेवलपर के लिए भी कई सुविधाएं हैं. उदाहरण के लिए, ये काम किए जा सकते हैं:

Android शेयरशीट का इस्तेमाल करना

सभी तरह की शेयरिंग के लिए, एक इंटेंट बनाएं और उसकी कार्रवाई को Intent.ACTION_SEND पर सेट करें. Android Sharesheet दिखाने के लिए, Intent.createChooser() को कॉल करें और उसे अपना Intent ऑब्जेक्ट पास करें. यह आपके इंटेंट का एक ऐसा वर्शन दिखाता है जो हमेशा Android Sharesheet दिखाता है.

टेक्स्ट कॉन्टेंट भेजना

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

Kotlin

val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
    type = "text/plain"
}

val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

Java

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");

Intent shareIntent = Intent.createChooser(sendIntent, null);
startActivity(shareIntent);

इसके अलावा, ज़्यादा जानकारी शामिल करने के लिए, कुछ और चीज़ें जोड़ी जा सकती हैं. जैसे, ईमेल पाने वाले लोगों के नाम (EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC), ईमेल का विषय (EXTRA_SUBJECT) वगैरह.

ध्यान दें: Gmail जैसे कुछ ईमेल ऐप्लिकेशन, EXTRA_EMAIL और EXTRA_CC जैसे अतिरिक्त आइटम के लिए String[] का इस्तेमाल करते हैं. इन्हें अपने इंटेंट में जोड़ने के लिए, putExtra(String, String[]) का इस्तेमाल करें.

बाइनरी कॉन्टेंट भेजना

ACTION_SEND ऐक्शन का इस्तेमाल करके, बाइनरी डेटा शेयर करें. सही MIME टाइप सेट करें और अतिरिक्त EXTRA_STREAM में डेटा के लिए यूआरआई डालें, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है. इसका इस्तेमाल आम तौर पर इमेज शेयर करने के लिए किया जाता है. हालांकि, इसका इस्तेमाल किसी भी तरह के बाइनरी कॉन्टेंट को शेयर करने के लिए किया जा सकता है.

Kotlin

val shareIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    // Example: content://com.google.android.apps.photos.contentprovider/...
    putExtra(Intent.EXTRA_STREAM, uriToImage)
    type = "image/jpeg"
}
startActivity(Intent.createChooser(shareIntent, null))

Java

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
// Example: content://com.google.android.apps.photos.contentprovider/...
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, null));

डेटा पाने वाले ऐप्लिकेशन को उस डेटा को ऐक्सेस करने की अनुमति चाहिए जिसे Uri सेट करता है. ऐसा करने के लिए, ये दो तरीके अपनाएं:

  • डेटा को अपने ContentProvider में स्टोर करें. साथ ही, पक्का करें कि अन्य ऐप्लिकेशन के पास, डेटा उपलब्ध कराने वाली कंपनी को ऐक्सेस करने की सही अनुमति हो. ऐक्सेस देने के लिए, हर यूआरआई के लिए अनुमतियों का इस्तेमाल करना सबसे सही तरीका है. ये अनुमतियां कुछ समय के लिए ही होती हैं और सिर्फ़ उस ऐप्लिकेशन को ऐक्सेस दी जाती है जिसे यह अनुमति मिली है. इस तरह का ContentProvider बनाने का आसान तरीका यह है कि FileProvider हेल्पर क्लास का इस्तेमाल करें.
  • सिस्टम MediaStore का इस्तेमाल करें. MediaStore मुख्य रूप से वीडियो, ऑडियो, और इमेज के एमआईएमई टाइप के लिए है. हालांकि, Android 3.0 (एपीआई लेवल 11) से, इसमें मीडिया के अलावा अन्य फ़ाइलें भी सेव की जा सकती हैं. ज़्यादा जानकारी के लिए, MediaStore.Files देखें. scanFile() का इस्तेमाल करके, MediaStore में फ़ाइलें डाली जा सकती हैं. इसके बाद, शेयर करने के लिए सही content:// स्टाइल वाला Uri, दिए गए onScanCompleted() कॉलबैक में पास किया जाता है. ध्यान दें कि सिस्टम MediaStore में जोड़ने के बाद, डिवाइस पर मौजूद किसी भी ऐप्लिकेशन से कॉन्टेंट को ऐक्सेस किया जा सकता है.

सही MIME टाइप का इस्तेमाल करना

भेजे जा रहे डेटा के लिए, सबसे सटीक एमआईएमई टाइप दें. उदाहरण के लिए, सादा टेक्स्ट शेयर करते समय text/plain का इस्तेमाल करें. Android में सामान्य डेटा भेजते समय, यहां दिए गए कुछ सामान्य MIME टाइप इस्तेमाल किए जा सकते हैं:

ईमेल पाने वाले लोग, ईमेल भेजने वाले
text/*
  • text/plain
  • text/rtf
  • text/html
  • text/json
`image/*`
  • image/jpg
  • image/png
  • image/gif
video/*
  • video/mp4
  • video/3gp
इस्तेमाल किए जा सकने वाले फ़ाइल एक्सटेंशन application/pdf

MIME टाइप के बारे में ज़्यादा जानने के लिए, MIME मीडिया टाइप की IANA की आधिकारिक रजिस्ट्री देखें.

Android की शेयरशीट में, कॉन्टेंट की झलक दिख सकती है. यह इस बात पर निर्भर करता है कि MIME टाइप क्या है. झलक देखने की कुछ सुविधाएं, सिर्फ़ कुछ खास तरह के कॉन्टेंट के लिए उपलब्ध हैं.

एक से ज़्यादा कॉन्टेंट शेयर करना

एक से ज़्यादा कॉन्टेंट शेयर करने के लिए, कॉन्टेंट पर ले जाने वाले यूआरआई की सूची के साथ ACTION_SEND_MULTIPLE कार्रवाई का इस्तेमाल करें. शेयर किए जा रहे कॉन्टेंट के मिक्स के हिसाब से, MIME टाइप अलग-अलग होता है. उदाहरण के लिए, अगर तीन JPEG इमेज शेयर की जाती हैं, तो टाइप के तौर पर "image/jpg" का इस्तेमाल किया जाता है. अलग-अलग तरह की इमेज के लिए, "image/*" का इस्तेमाल करके ऐसी गतिविधि से मैच करें जो किसी भी तरह की इमेज को मैनेज करती है. हालांकि, अलग-अलग तरह के फ़ाइल फ़ॉर्मैट शेयर किए जा सकते हैं, लेकिन हम ऐसा करने का सुझाव नहीं देते. ऐसा इसलिए, क्योंकि फ़ाइल पाने वाले को यह पता नहीं चलता कि उसे क्या भेजा जा रहा है. अगर एक से ज़्यादा तरह के ईमेल भेजने हैं, तो "*/*" का इस्तेमाल करें. डेटा को पार्स करने और प्रोसेस करने का काम, डेटा पाने वाले ऐप्लिकेशन पर निर्भर करता है. यहां एक उदाहरण दिया गया है:

Kotlin

val imageUris: ArrayList<Uri> = arrayListOf(
        // Add your image URIs here
        imageUri1,
        imageUri2
)

val shareIntent = Intent().apply {
    action = Intent.ACTION_SEND_MULTIPLE
    putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris)
    type = "image/*"
}
startActivity(Intent.createChooser(shareIntent, null))

Java

ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2);

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, null));

पक्का करें कि दिए गए Uri ऑब्जेक्ट, ऐसे डेटा पर ले जाते हों जिसे पाने वाला ऐप्लिकेशन ऐक्सेस कर सकता हो.

टेक्स्ट की झलक में रिच कॉन्टेंट जोड़ना

Android 10 (एपीआई लेवल 29) से, Android Sharesheet में शेयर किए जा रहे टेक्स्ट की झलक दिखती है. कुछ मामलों में, शेयर किए जा रहे टेक्स्ट को समझना मुश्किल हो सकता है. https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 जैसा मुश्किल यूआरएल शेयर करें. बेहतर झलक से, उपयोगकर्ताओं को यह भरोसा दिलाया जा सकता है कि क्या शेयर किया जा रहा है.

अगर टेक्स्ट की झलक देखी जा रही है, तो उसके लिए टाइटल, थंबनेल इमेज या दोनों सेट किए जा सकते हैं. Intent.createChooser() को कॉल करने से पहले, Intent.EXTRA_TITLE में ब्यौरा जोड़ें. साथ ही, ClipData का इस्तेमाल करके काम का थंबनेल जोड़ें.

ध्यान दें: इमेज कॉन्टेंट का यूआरआई, FileProvider से दिया जाता है. आम तौर पर, कॉन्फ़िगर किए गए <cache-path> से दिया जाता है. ज़्यादा जानकारी के लिए, फ़ाइलें शेयर करना लेख पढ़ें. जिस इमेज को थंबनेल के तौर पर इस्तेमाल करना है उसे पढ़ने के लिए, Sharesheet को ज़रूरी अनुमतियां दें. ज़्यादा जानकारी के लिए, Intent.FLAG_GRANT_READ_URI_PERMISSION देखें.

यहां एक उदाहरण दिया गया है:

Kotlin

 val share = Intent.createChooser(Intent().apply {
      action = Intent.ACTION_SEND
      putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/")

      // (Optional) Here you're setting the title of the content
      putExtra(Intent.EXTRA_TITLE, "Introducing content previews")

      // (Optional) Here you're passing a content URI to an image to be displayed
      data = contentUri
      flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
  }, null)
  startActivity(share)

Java

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/");

// (Optional) Here you're setting the title of the content
sendIntent.putExtra(Intent.EXTRA_TITLE, "Introducing content previews");

// (Optional) Here you're passing a content URI to an image to be displayed
sendIntent.setData(contentUri);
sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// Show the Sharesheet
startActivity(Intent.createChooser(sendIntent, null));

झलक कुछ इस तरह दिखती है:

शेयरशीट में कस्टम कार्रवाइयां जोड़ना

Android शेयरशीट पर कस्टम कार्रवाइयों का स्क्रीनशॉट.

Android 14 (एपीआई लेवल 34) और इसके बाद के वर्शन पर, ऐप्लिकेशन Android शेयरशीट में कस्टम कार्रवाइयां जोड़ सकते हैं. कस्टम कार्रवाइयां, Android शेयरशीट में सबसे ऊपर छोटे ऐक्शन आइकॉन के तौर पर दिखती हैं. साथ ही, ऐप्लिकेशन किसी भी Intent को आइकॉन पर क्लिक करने पर होने वाली कार्रवाई के तौर पर तय कर सकते हैं.

Android शेयरशीट पर कस्टम कार्रवाइयां जोड़ने के लिए, पहले ChooserAction के साथ ChooserAction.Builder बनाएं. आइकॉन पर क्लिक करने पर होने वाली कार्रवाई के तौर पर, PendingIntent को चुना जा सकता है. अपनी सभी कस्टम कार्रवाइयों वाला एक कलेक्शन बनाएं और उसे EXTRA_CHOOSER_CUSTOM_ACTIONS के Intent के तौर पर तय करें.

Kotlin

val sendIntent = Intent(Intent.ACTION_SEND)
    .setType("text/plain")
    .putExtra(Intent.EXTRA_TEXT, text)
val shareIntent = Intent.createChooser(sendIntent, null)
val customActions = arrayOf(
    ChooserAction.Builder(
        Icon.createWithResource(context, R.drawable.ic_custom_action),
        "Custom",
        PendingIntent.getBroadcast(
            context,
            1,
            Intent(Intent.ACTION_VIEW),
            PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT
        )
    ).build()
)
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions)
context.startActivity(shareIntent)

Java

Intent sendIntent = new Intent(Intent.ACTION_SEND)
        .setType("text.plain")
        .putExtra(Intent.EXTRA_TEXT, text);
Intent shareIntent = Intent.createChooser(sendIntent, null);
ChooserAction[] actions = new ChooserAction[]{
        new ChooserAction.Builder(
                Icon.createWithResource(context, R.drawable.ic_custom_action),
                "Custom",
                PendingIntent.getBroadcast(
                        context,
                        1,
                        new Intent(Intent.ACTION_VIEW),
                        PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
                )
        ).build()
};
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions);
context.startActivity(shareIntent);

कस्टम टारगेट जोड़ना

Android Sharesheet में, ज़्यादा से ज़्यादा दो ChooserTarget ऑब्जेक्ट तय किए जा सकते हैं. ये ऑब्जेक्ट, ChooserTargetServices से लोड किए गए शेयर करने के शॉर्टकट और चुनने वाले टारेगट से पहले दिखाए जाते हैं. ऐप्लिकेशन के सुझावों से पहले दी गई गतिविधियों के लिए, दो इंटेंट भी तय किए जा सकते हैं:

Intent.createChooser() को कॉल करने के बाद, शेयर करने के इंटेंट में Intent.EXTRA_CHOOSER_TARGETS और Intent.EXTRA_INITIAL_INTENTS जोड़ें:

Kotlin

val share = Intent.createChooser(myShareIntent, null).apply {
    putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray)
    putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray)
}

Java

Intent shareIntent = Intent.createChooser(sendIntent, null);
share.putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray);
share.putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray);

इस सुविधा का इस्तेमाल सावधानी से करें. आपके जोड़े गए हर कस्टम Intent और ChooserTarget से, सिस्टम के सुझाए गए विकल्पों की संख्या कम हो जाती है. आम तौर पर, हम कस्टम टारगेट जोड़ने का सुझाव नहीं देते. Intent.EXTRA_INITIAL_INTENTS जोड़ने का एक सामान्य उदाहरण यह है कि शेयर किए गए कॉन्टेंट पर उपयोगकर्ता कौनसी अन्य कार्रवाइयां कर सकते हैं. उदाहरण के लिए, कोई उपयोगकर्ता इमेज शेयर करता है और Intent.EXTRA_INITIAL_INTENTS का इस्तेमाल करके, उसे लिंक भेजने की अनुमति दी जाती है. Intent.EXTRA_CHOOSER_TARGETS को जोड़ने का एक सामान्य और सही उदाहरण यह है कि आपके ऐप्लिकेशन में मौजूद काम के लोगों या डिवाइसों को दिखाया जा सके.

कॉम्पोनेंट के हिसाब से खास टारगेट बाहर रखना

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

Intent.createChooser() को कॉल करने के बाद, अपने इंटेंट में Intent.EXTRA_EXCLUDE_COMPONENTS जोड़ें:

Kotlin

  val share = Intent.createChooser(Intent(), null).apply {
    // Only use for components you have control over
    val excludedComponentNames = arrayOf(ComponentName("com.example.android", "ExampleClass"))
    putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames)
  }

Java

  Intent shareIntent = Intent.createChooser(new Intent(), null);
  // Only use for components you have control over
  ComponentName[] excludedComponentNames = {
          new ComponentName("com.example.android", "ExampleClass")
  };
  shareIntent.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames);

शेयर करने के बारे में जानकारी पाना

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

सबसे पहले, किसी BroadcastReceiver के लिए PendingIntent बनाएं और Intent.createChooser() में उसका IntentSender डालें:

Kotlin

var share = Intent(Intent.ACTION_SEND)
// ...
val pi = PendingIntent.getBroadcast(
    myContext, requestCode,
    Intent(myContext, MyBroadcastReceiver::class.java),
    PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
share = Intent.createChooser(share, null, pi.intentSender)

Java

Intent share = new Intent(ACTION_SEND);
...
PendingIntent pi = PendingIntent.getBroadcast(myContext, requestCode,
        new Intent(myContext, MyBroadcastReceiver.class),
        PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
share = Intent.createChooser(share, null, pi.getIntentSender());

MyBroadcastReceiver में कॉलबैक पाएं और Intent.EXTRA_CHOSEN_COMPONENT में देखें:

Kotlin

override fun onReceive(context: Context, intent: Intent) {
  ...
  val clickedComponent : ComponentName = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}

Java

@Override public void onReceive(Context context, Intent intent) {
  ...
  ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT);
}

शेयरशीट में कस्टम कार्रवाइयां जोड़ना

Android 14 (एपीआई लेवल 34) और इसके बाद के वर्शन पर, ऐप्लिकेशन Android शेयरशीट में कस्टम कार्रवाइयां जोड़ सकते हैं. ChooserAction.Builder के साथ ChooserAction बनाएं. आइकॉन पर क्लिक करने पर होने वाली कार्रवाई के तौर पर, PendingIntent को चुना जा सकता है. अपनी सभी कस्टम कार्रवाइयों वाला एक कलेक्शन बनाएं और उसे EXTRA_CHOOSER_CUSTOM_ACTIONS के Intent के तौर पर बताएं.

Kotlin

val sendIntent = Intent(Intent.ACTION_SEND)
    .setType("text/plain")
    .putExtra(Intent.EXTRA_TEXT, text)
val shareIntent = Intent.createChooser(sendIntent, null)
val customActions = arrayOf(
    ChooserAction.Builder(
        Icon.createWithResource(context, R.drawable.ic_custom_action),
        "Custom",
        PendingIntent.getBroadcast(
            context,
            1,
            Intent(Intent.ACTION_VIEW),
            PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT
        )
    ).build()
)
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions)
context.startActivity(shareIntent)

Java

Intent sendIntent = new Intent(Intent.ACTION_SEND)
        .setType("text.plain")
        .putExtra(Intent.EXTRA_TEXT, text);
Intent shareIntent = Intent.createChooser(sendIntent, null);
ChooserAction[] actions = new ChooserAction[]{
        new ChooserAction.Builder(
                Icon.createWithResource(context, R.drawable.ic_custom_action),
                "Custom",
                PendingIntent.getBroadcast(
                        context,
                        1,
                        new Intent(Intent.ACTION_VIEW),
                        PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
                )
        ).build()
};
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions);
context.startActivity(shareIntent);

Android इंटेंट रिज़ॉल्वर का इस्तेमाल करना

ACTION_SEND इंटेंट रिज़ॉल्वर का स्क्रीनशॉट.

Android इंटेंट रिज़ॉल्वर का इस्तेमाल तब किया जाता है, जब किसी ऐप्लिकेशन को डेटा भेजना हो. ऐसा, पहले से तय किए गए टास्क फ़्लो के तहत किया जाता है.

Android इंटेंट रिज़ॉल्वर का इस्तेमाल करने के लिए, कोई इंटेंट बनाएं और उसमें अतिरिक्त जानकारी जोड़ें, जैसे कि Android शेयरशीट को कॉल करने के लिए की जाती है. हालांकि, Intent.createChooser() को कॉल न करें.

अगर ACTION_SEND और MIME टाइप से मैच करने वाले फ़िल्टर वाले एक से ज़्यादा ऐप्लिकेशन इंस्टॉल हैं, तो सिस्टम इंटेंट रिज़ॉल्वर नाम का एक डायलॉग बॉक्स दिखाता है. इसकी मदद से, उपयोगकर्ता शेयर करने के लिए कोई टारगेट चुन सकता है. अगर कोई एक ऐप्लिकेशन मैच करता है, तो वह चलता है.

टेक्स्ट भेजने के लिए, Android इंटेंट रिज़ॉल्वर का इस्तेमाल करने का उदाहरण यहां दिया गया है:

Kotlin

val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
    type = "text/plain"
}
startActivity(sendIntent)

Java

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);

ज़्यादा जानें

डेटा भेजने के बारे में ज़्यादा जानकारी के लिए, इंटेंट और इंटेंट फ़िल्टर देखें.