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

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

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

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

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

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

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

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

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

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

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

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

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 कार्रवाई का इस्तेमाल करके, बाइनरी डेटा शेयर करें. सही एमआईएमई टाइप सेट करें और अतिरिक्त 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 देखें. MediaStore में फ़ाइलें डालने के लिए, scanFile() का इस्तेमाल किया जा सकता है. इसके बाद, शेयर करने के लिए सही 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 टाइप के बारे में ज़्यादा जानकारी के लिए, IANA की MIME मीडिया टाइप की आधिकारिक रजिस्ट्री देखें.

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 की शेयरशीट में शेयर किए जा रहे टेक्स्ट की झलक दिखती है. कुछ मामलों में, शेयर किए जा रहे टेक्स्ट को समझना मुश्किल हो सकता है. https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 जैसे मुश्किल यूआरएल को शेयर करने की कोशिश करें. बेहतर प्रीव्यू से, उपयोगकर्ताओं को यह भरोसा दिलाया जा सकता है कि क्या शेयर किया जा रहा है.

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

ध्यान दें: इमेज कॉन्टेंट यूआरआई, FileProvider से मिलता है. आम तौर पर, यह कॉन्फ़िगर किए गए <cache-path> से मिलता है. ज़्यादा जानकारी के लिए, फ़ाइलें शेयर करना लेख पढ़ें. यह पक्का करें कि आपने शेयरशीट को, थंबनेल के तौर पर इस्तेमाल की जाने वाली इमेज को पढ़ने की ज़रूरी अनुमतियां दी हों. ज़्यादा जानकारी के लिए, 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 Sharesheet में कस्टम कार्रवाइयां जोड़ सकते हैं. कस्टम कार्रवाइयां, Android की शेयरशीट में सबसे ऊपर छोटे ऐक्शन आइकॉन के तौर पर दिखती हैं. साथ ही, ऐप्लिकेशन यह तय कर सकते हैं कि आइकॉन पर क्लिक करने पर कौनसी कार्रवाई Intent शुरू होगी.

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

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 की शेयरशीट में, ज़्यादा से ज़्यादा दो 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 की शेयरशीट की मदद से, यह जानकारी पाई जा सकती है. इसके लिए, आपको ComponentName देना होगा. यह ComponentName, आपके उपयोगकर्ताओं ने चुना होगा.IntentSender

सबसे पहले, 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 Sharesheet में कस्टम कार्रवाइयां जोड़ सकते हैं. ChooserAction.Builder की मदद से ChooserAction बनाएं. आइकॉन पर क्लिक करने पर, PendingIntent को कार्रवाई के तौर पर सेट किया जा सकता है. अपनी सभी कस्टम कार्रवाइयों को शामिल करने वाला एक ऐरे बनाएं और उसे शेयर Intent के EXTRA_CHOOSER_CUSTOM_ACTIONS के तौर पर तय करें.

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 Sharesheet को कॉल करने के लिए किया जाता है. हालांकि, कॉल न करें Intent.createChooser().

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

यहां 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);

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

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