Android, इंटेंट और उनसे जुड़े एक्सट्रा का इस्तेमाल करता है, ताकि उपयोगकर्ता अपने पसंदीदा ऐप्लिकेशन का इस्तेमाल करके, जानकारी को तेज़ी से और आसानी से शेयर कर सकें.
Android, उपयोगकर्ताओं को ऐप्लिकेशन के बीच डेटा शेयर करने के दो तरीके उपलब्ध कराता है:
- Android Sharesheet को मुख्य रूप से, आपके ऐप्लिकेशन से बाहर कॉन्टेंट भेजने और/या सीधे किसी दूसरे उपयोगकर्ता को कॉन्टेंट भेजने के लिए डिज़ाइन किया गया है. उदाहरण के लिए, किसी दोस्त के साथ यूआरएल शेयर करना.
- Android इंटेंट रिज़ॉल्वर, पहले से तय किए गए टास्क के अगले चरण में डेटा भेजने के लिए सबसे सही है. उदाहरण के लिए, अपने ऐप्लिकेशन से PDF फ़ाइल खोलना और उपयोगकर्ताओं को अपनी पसंद का व्यूअर चुनने की अनुमति देना.
इंटेंट बनाते समय, आपको यह तय करना होता है कि इंटेंट को कौनसी कार्रवाई करनी है.
Android, ACTION_SEND
कार्रवाई का इस्तेमाल करके एक गतिविधि से दूसरी गतिविधि में डेटा भेजता है.
यह डेटा प्रोसेस की अलग-अलग सीमाओं पर निर्भर करता है. आपको डेटा और उसका टाइप बताना होगा. सिस्टम, उन गतिविधियों की अपने-आप पहचान करता है जो डेटा इकट्ठा कर सकती हैं. साथ ही, उन्हें उपयोगकर्ता को दिखाता है. इंटेंट रिज़ॉल्वर के मामले में, अगर इंटेंट को सिर्फ़ एक गतिविधि मैनेज कर सकती है, तो वह गतिविधि तुरंत शुरू हो जाती है.
Android Sharesheet का इस्तेमाल क्यों करें
हमारा सुझाव है कि सभी ऐप्लिकेशन का इस्तेमाल करने वाले लोगों के अनुभव को एक जैसा बनाने के लिए, Android Sharesheet का इस्तेमाल करें. अपने ऐप्लिकेशन के शेयर टारगेट की सूची न दिखाएं या अपनी शेयरशीट के वैरिएशन न बनाएं.
Android Sharesheet की मदद से उपयोगकर्ता एक ही टैप में, सही व्यक्ति के साथ काम के ऐप्लिकेशन के सुझाव शेयर कर सकते हैं. शेयरशीट, कस्टम सलूशन के लिए उपलब्ध नहीं होने वाले टारगेट का सुझाव दे सकती है. साथ ही, यह लगातार रैंकिंग का इस्तेमाल करती है. ऐसा इसलिए होता है, क्योंकि शेयरशीट सिर्फ़ सिस्टम में उपलब्ध ऐप्लिकेशन और उपयोगकर्ता गतिविधि के बारे में जानकारी को ध्यान में रख सकती है.
Android Sharesheet में डेवलपर के लिए भी कई सुविधाएं हैं. उदाहरण के लिए, ये काम किए जा सकते हैं:
- जानें कि आपके उपयोगकर्ता कब और कहां शेयर करते हैं
- कस्टम
ChooserTarget
और ऐप्लिकेशन टारगेट जोड़ना - Android 10 (एपीआई लेवल 29) से, रिच टेक्स्ट कॉन्टेंट की झलक दिखाना
- कॉम्पोनेंट के नाम से मैच होने वाले टारगेट बाहर रखना
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 टाइप का इस्तेमाल करना
आपके भेजे जा रहे डेटा के लिए, सबसे सटीक MIME टाइप दें. उदाहरण के लिए, सादा टेक्स्ट शेयर करते समय text/plain
का इस्तेमाल करें. Android में सामान्य डेटा भेजते समय, यहां दिए गए कुछ सामान्य MIME टाइप इस्तेमाल किए जा सकते हैं:
ईमेल पाने वाले लोग, | भेजने वाले लोगों ने भेजा |
---|---|
text/* |
|
`image/*` |
|
video/* |
|
इस्तेमाल किए जा सकने वाले फ़ाइल एक्सटेंशन | 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 14 (एपीआई लेवल 34) और इसके बाद के वर्शन पर, ऐप्लिकेशन Android शेयरशीट में कस्टम कार्रवाइयां जोड़ सकते हैं.
Android Sharesheet में सबसे ऊपर, कस्टम ऐक्शन छोटे-छोटे ऐक्शन आइकॉन के तौर पर दिखते हैं. साथ ही, ऐप्लिकेशन
आइकॉन पर क्लिक करने के बाद शुरू की जाने वाली कार्रवाई के तौर पर, किसी भी Intent
को तय कर सकते हैं.
Android शेयरशीट पर कस्टम कार्रवाइयां जोड़ने के लिए, पहले ChooserAction
के साथ ChooserAction.Builder
बनाएं.
आइकॉन पर क्लिक करने पर होने वाली कार्रवाई के तौर पर, PendingIntent
को चुना जा सकता है. अपनी सभी कस्टम कार्रवाइयों वाला एक कलेक्शन बनाएं और उसे EXTRA_CHOOSER_CUSTOM_ACTIONS
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 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) और उसके बाद के वर्शन पर, ऐप्लिकेशन अपनी पसंद के मुताबिक कार्रवाइयां जोड़ सकते हैं.
ChooserAction.Builder
के साथ ChooserAction
बनाएं.
आइकॉन पर क्लिक करने के बाद शुरू की गई कार्रवाई के तौर पर, PendingIntent
तय किया जा सकता है. अपनी सभी कस्टम कार्रवाइयों वाला एक कलेक्शन बनाएं और उसे EXTRA_CHOOSER_CUSTOM_ACTIONS
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 इंटेंट रिज़ॉल्वर का इस्तेमाल करना
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);
ज़्यादा जानें
डेटा भेजने के बारे में ज़्यादा जानकारी के लिए, इंटेंट और इंटेंट फ़िल्टर देखें.