অ্যান্ড্রয়েড ব্যবহারকারীদের তাদের পছন্দের অ্যাপ ব্যবহার করে দ্রুত এবং সহজে তথ্য ভাগ করে নেওয়ার সুযোগ দেওয়ার জন্য উদ্দেশ্য এবং তাদের সাথে সম্পর্কিত অতিরিক্ত বৈশিষ্ট্য ব্যবহার করে।
অ্যান্ড্রয়েড ব্যবহারকারীদের অ্যাপগুলির মধ্যে ডেটা ভাগ করে নেওয়ার দুটি উপায় প্রদান করে:
- অ্যান্ড্রয়েড শেয়ারশিট মূলত আপনার অ্যাপের বাইরে এবং/অথবা সরাসরি অন্য ব্যবহারকারীর কাছে কন্টেন্ট পাঠানোর জন্য তৈরি করা হয়েছে। উদাহরণস্বরূপ, বন্ধুর সাথে একটি URL শেয়ার করা।
- একটি সুনির্দিষ্ট কাজের পরবর্তী পর্যায়ে ডেটা প্রেরণের জন্য অ্যান্ড্রয়েড ইনটেন্ট রেজলভার সবচেয়ে উপযুক্ত। উদাহরণস্বরূপ, আপনার অ্যাপ থেকে একটি পিডিএফ খোলা এবং ব্যবহারকারীদের তাদের পছন্দের ভিউয়ার বেছে নিতে দেওয়া।
যখন আপনি একটি ইন্টেন্ট তৈরি করেন, তখন আপনি সেই ক্রিয়াটি নির্দিষ্ট করেন যা আপনি ইন্টেন্টটি সম্পাদন করতে চান। অ্যান্ড্রয়েড একটি কার্যকলাপ থেকে অন্য কার্যকলাপে ডেটা প্রেরণের জন্য ACTION_SEND ক্রিয়াটি ব্যবহার করে, এমনকি প্রক্রিয়া সীমানা পেরিয়েও। আপনাকে ডেটা এবং এর ধরণ নির্দিষ্ট করতে হবে। সিস্টেমটি স্বয়ংক্রিয়ভাবে ডেটা গ্রহণ করতে পারে এমন সামঞ্জস্যপূর্ণ কার্যকলাপগুলি সনাক্ত করে এবং ব্যবহারকারীর কাছে সেগুলি প্রদর্শন করে। ইন্টেন্ট সমাধানকারীর ক্ষেত্রে, যদি শুধুমাত্র একটি কার্যকলাপ ইন্টেন্ট পরিচালনা করতে পারে, তবে সেই কার্যকলাপটি অবিলম্বে শুরু হয়।
কেন অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করবেন

আপনার ব্যবহারকারীদের জন্য অ্যাপ জুড়ে ধারাবাহিকতা তৈরি করতে আমরা দৃঢ়ভাবে Android Sharesheet ব্যবহার করার পরামর্শ দিচ্ছি। আপনার অ্যাপের নিজস্ব শেয়ার টার্গেটের তালিকা প্রদর্শন করবেন না বা আপনার নিজস্ব শেয়ারশিট বৈচিত্র তৈরি করবেন না।
অ্যান্ড্রয়েড শেয়ারশিট ব্যবহারকারীদের সঠিক ব্যক্তির সাথে তথ্য ভাগ করে নিতে সাহায্য করে, প্রাসঙ্গিক অ্যাপ পরামর্শ সহ, সবই একটি মাত্র ট্যাপের মাধ্যমে। শেয়ারশিট কাস্টম সমাধানের জন্য অনুপলব্ধ লক্ষ্যগুলি সুপারিশ করতে পারে এবং একটি সামঞ্জস্যপূর্ণ র্যাঙ্কিং ব্যবহার করে। এর কারণ হল শেয়ারশিট অ্যাপ এবং ব্যবহারকারীর কার্যকলাপ সম্পর্কে তথ্য বিবেচনা করতে পারে যা শুধুমাত্র সিস্টেমে উপলব্ধ।
অ্যান্ড্রয়েড শেয়ারশিটে ডেভেলপারদের জন্য অনেক সুবিধাজনক বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলি করতে পারেন:
- আপনার ব্যবহারকারীরা কখন এবং কোথায় একটি ভাগ সম্পূর্ণ করবেন তা খুঁজে বের করুন
- একটি কাস্টম
ChooserTargetএবং অ্যাপ টার্গেট যোগ করুন - অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) থেকে শুরু করে রিচ টেক্সট কন্টেন্ট প্রিভিউ প্রদান করুন
- নির্দিষ্ট উপাদানের নামের সাথে মিলে যাওয়া লক্ষ্যগুলি বাদ দিন
অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করুন
সকল ধরণের শেয়ারিংয়ের জন্য, একটি ইন্টেন্ট তৈরি করুন এবং এর ক্রিয়াটি Intent.ACTION_SEND এ সেট করুন। অ্যান্ড্রয়েড শেয়ারশিট প্রদর্শনের জন্য, Intent.createChooser() কল করুন, এটিকে আপনার Intent অবজেক্টটি পাস করুন। এটি আপনার ইনটেন্টের একটি সংস্করণ ফেরত দেয় যা সর্বদা অ্যান্ড্রয়েড শেয়ারশিট প্রদর্শন করে।
টেক্সট কন্টেন্ট পাঠান
অ্যান্ড্রয়েড শেয়ারশিটের সবচেয়ে সহজ এবং সাধারণ ব্যবহার হল এক কার্যকলাপ থেকে অন্য কার্যকলাপে টেক্সট কন্টেন্ট পাঠানো। উদাহরণস্বরূপ, বেশিরভাগ ব্রাউজার বর্তমানে প্রদর্শিত পৃষ্ঠার URL অন্য অ্যাপের সাথে টেক্সট হিসেবে শেয়ার করতে পারে। ইমেল বা সোশ্যাল নেটওয়ার্কিংয়ের মাধ্যমে বন্ধুদের সাথে একটি নিবন্ধ বা ওয়েবসাইট শেয়ার করার জন্য এটি কার্যকর। এটি কীভাবে করবেন তার একটি উদাহরণ এখানে দেওয়া হল:
কোটলিন
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)
জাভা
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 তে ডেটাতে একটি URI রাখুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে। এটি সাধারণত একটি ছবি শেয়ার করার জন্য ব্যবহৃত হয় তবে যেকোনো ধরণের বাইনারি কন্টেন্ট শেয়ার করার জন্য ব্যবহার করা যেতে পারে।
কোটলিন
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))
জাভা
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এ ডেটা সংরক্ষণ করুন, নিশ্চিত করুন যে অন্যান্য অ্যাপগুলির আপনার প্রোভাইডার অ্যাক্সেস করার সঠিক অনুমতি আছে। অ্যাক্সেস প্রদানের জন্য পছন্দের পদ্ধতি হল per-URI অনুমতি ব্যবহার করা, যা অস্থায়ী এবং শুধুমাত্র গ্রহণকারী অ্যাপ্লিকেশনটিতে অ্যাক্সেস দেয়। এই ধরণের একটিContentProviderতৈরি করার একটি সহজ উপায় হলFileProviderসহায়ক ক্লাস ব্যবহার করা। -
MediaStoreসিস্টেমটি ব্যবহার করুন।MediaStoreমূলত ভিডিও, অডিও এবং চিত্র MIME প্রকারের জন্য। তবে, Android 3.0 (API স্তর 11) দিয়ে শুরু করে, এটি নন-মিডিয়া প্রকারগুলিও সংরক্ষণ করতে পারে। আরও তথ্যের জন্য,MediaStore.Filesদেখুন।scanFile()ব্যবহার করেMediaStoreএ ফাইলগুলি ঢোকানো যেতে পারে, যার পরে শেয়ার করার জন্য উপযুক্ত একটিcontent://-styleUriপ্রদত্তonScanCompleted()কলব্যাকে পাঠানো হয়। মনে রাখবেন যে সিস্টেমMediaStoreএ একবার যোগ করা হলে, ডিভাইসের যেকোনো অ্যাপে কন্টেন্ট অ্যাক্সেসযোগ্য হবে।
সঠিক MIME টাইপ ব্যবহার করুন
আপনি যে ডেটা পাঠাচ্ছেন তার জন্য সবচেয়ে নির্দিষ্ট MIME টাইপটি প্রদান করুন। উদাহরণস্বরূপ, প্লেইন টেক্সট শেয়ার করার সময় text/plain ব্যবহার করুন। Android এ সহজ ডেটা পাঠানোর সময় এখানে কয়েকটি সাধারণ MIME টাইপ দেওয়া হল:
| প্রাপকরা নিবন্ধন করেন | প্রেরকরা পাঠান |
|---|---|
text/* |
|
`image/*` |
|
video/* |
|
| সমর্থিত ফাইল এক্সটেনশন | application/pdf |
MIME প্রকার সম্পর্কে আরও তথ্যের জন্য, MIME মিডিয়া প্রকারের IANA অফিসিয়াল রেজিস্ট্রি দেখুন।
প্রদত্ত MIME প্রকারের উপর নির্ভর করে Android Sharesheet একটি কন্টেন্ট প্রিভিউ দেখাতে পারে। কিছু প্রিভিউ বৈশিষ্ট্য শুধুমাত্র নির্দিষ্ট ধরণের জন্য উপলব্ধ।
একাধিক কন্টেন্ট শেয়ার করুন
একাধিক কন্টেন্ট শেয়ার করার জন্য, ACTION_SEND_MULTIPLE অ্যাকশনটি ব্যবহার করুন এবং কন্টেন্টের দিকে নির্দেশ করে এমন URI-এর তালিকা ব্যবহার করুন। MIME টাইপ আপনার শেয়ার করা কন্টেন্টের মিশ্রণ অনুসারে পরিবর্তিত হয়। উদাহরণস্বরূপ, যদি আপনি তিনটি JPEG ছবি শেয়ার করেন, তাহলে আপনি "image/jpg" টাইপ ব্যবহার করেন। ছবির ধরণের মিশ্রণের জন্য, যেকোনো ধরণের ছবি পরিচালনা করে এমন একটি অ্যাক্টিভিটির সাথে মেলানোর জন্য "image/*" ব্যবহার করুন। যদিও বিভিন্ন ধরণের মিশ্রণ শেয়ার করা সম্ভব, আমরা এটিকে অত্যন্ত নিরুৎসাহিত করি, কারণ প্রাপকের কাছে কী পাঠানো হবে তা স্পষ্ট নয়। যদি একাধিক ধরণের পাঠানোর প্রয়োজন হয়, তাহলে "*/*" ব্যবহার করুন। আপনার ডেটা পার্স এবং প্রক্রিয়া করার দায়িত্ব গ্রহণকারী অ্যাপ্লিকেশনের উপর। এখানে একটি উদাহরণ দেওয়া হল:
কোটলিন
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))
জাভা
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 অবজেক্টগুলি এমন ডেটা নির্দেশ করে যা কোনও গ্রহণকারী অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে।
টেক্সট প্রিভিউতে সমৃদ্ধ কন্টেন্ট যোগ করুন
অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) থেকে শুরু করে, অ্যান্ড্রয়েড শেয়ারশিট শেয়ার করা টেক্সটের একটি প্রিভিউ দেখায়। কিছু ক্ষেত্রে, শেয়ার করা টেক্সট বোঝা কঠিন হতে পারে। https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 এর মতো জটিল URL শেয়ার করার কথা বিবেচনা করুন। একটি সমৃদ্ধ প্রিভিউ আপনার ব্যবহারকারীদের কী শেয়ার করা হচ্ছে তা আশ্বস্ত করতে পারে।
যদি আপনি টেক্সট প্রিভিউ করেন, তাহলে আপনি একটি শিরোনাম, একটি থাম্বনেইল ছবি, অথবা উভয়ই সেট করতে পারেন। Intent.createChooser() কল করার আগে Intent.EXTRA_TITLE তে একটি বিবরণ যোগ করুন এবং ClipData ব্যবহার করে একটি প্রাসঙ্গিক থাম্বনেইল যোগ করুন।
দ্রষ্টব্য: ছবির বিষয়বস্তু URI একটি FileProvider থেকে প্রদান করা হয়, সাধারণত একটি কনফিগার করা <cache-path> থেকে। আরও তথ্যের জন্য, ফাইল শেয়ারিং দেখুন। আপনি যে কোনও ছবি থাম্বনেইল হিসেবে ব্যবহার করতে চান তা পড়ার জন্য Sharesheet কে সঠিক অনুমতি দিতে ভুলবেন না। আরও তথ্যের জন্য, Intent.FLAG_GRANT_READ_URI_PERMISSION দেখুন।
এখানে একটি উদাহরণ:
কোটলিন
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)
জাভা
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));
প্রিভিউটি এরকম দেখাচ্ছে:

শেয়ারশিটে কাস্টম অ্যাকশন যোগ করুন

অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশনের স্ক্রিনশট।
অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। কাস্টম অ্যাকশনগুলি অ্যান্ড্রয়েড শেয়ারশিটের শীর্ষে ছোট অ্যাকশন আইকন হিসাবে দেখানো হয় এবং অ্যাপগুলি আইকনে ক্লিক করার সময় যেকোনো Intent অ্যাকশন হিসাবে উল্লেখ করতে পারে।
অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে, প্রথমে ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent অ্যাকশনকে আমন্ত্রিত হিসেবে নির্দিষ্ট করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন ধারণকারী একটি অ্যারে তৈরি করুন এবং এটিকে share Intent এর EXTRA_CHOOSER_CUSTOM_ACTIONS হিসাবে নির্দিষ্ট করুন।
কোটলিন
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)
জাভা
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);
কাস্টম লক্ষ্য যোগ করুন
অ্যান্ড্রয়েড শেয়ারশিট আপনাকে ChooserTargetServices থেকে লোড করা শেয়ারিং শর্টকাট এবং chooser টার্গেটের আগে প্রদর্শিত দুটি ChooserTarget অবজেক্ট নির্দিষ্ট করতে দেয়। আপনি অ্যাপের পরামর্শের আগে তালিকাভুক্ত কার্যকলাপের দিকে নির্দেশ করে দুটি পর্যন্ত ইন্টেন্টও নির্দিষ্ট করতে পারেন:

Intent.createChooser() কল করার পর আপনার শেয়ারে Intent.EXTRA_CHOOSER_TARGETS এবং Intent.EXTRA_INITIAL_INTENTS যোগ করুন:
কোটলিন
val share = Intent.createChooser(myShareIntent, null).apply { putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray) putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray) }
জাভা
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 যোগ করুন:
কোটলিন
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) }
জাভা
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 সরবরাহ করুন:
কোটলিন
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)
জাভা
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_CHOOSER_RESULT এ দেখুন:
কোটলিন
override fun onReceive(context: Context, intent: Intent) { ... val chooserResult: ChooserResult? = IntentCompat.getParcelableExtra( intent, Intent.EXTRA_CHOOSER_RESULT, ChooserResult::class.java, ) chooserResult?.let { Log.i( TAG, "Share callback: isShortcut: ${it.isShortcut}, type: ${typeToString(it.type)}, componentName: ${it.selectedComponent}", ) } ?: Log.i(TAG, "chooserResult is null") }
জাভা
@Override public void onReceive(Context context, Intent intent) { ... ChooserResult chooserResult = intent.getParcelableExtra(EXTRA_CHOOSER_RESULT); Log.i( TAG, "Share callback: isShortcut: " + chooserResult.isShortcut() + ", type: " + chooserResult.getType() + ", componentName: " + chooserResult.getSelectedComponent() ); }
শেয়ারশিটে কাস্টম অ্যাকশন যোগ করুন
Android 14 (API লেভেল 34) এবং তার উপরে, অ্যাপগুলি Android Sharesheet-এ কাস্টম অ্যাকশন যোগ করতে পারে। ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent অ্যাকশনকে আমন্ত্রণ জানানোর জন্য নির্দিষ্ট করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন ধারণকারী একটি অ্যারে তৈরি করুন এবং এটিকে Share Intent এর EXTRA_CHOOSER_CUSTOM_ACTIONS হিসাবে নির্দিষ্ট করুন।
কোটলিন
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)
জাভা
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);
অ্যান্ড্রয়েড ইন্টেন্ট রিজলভার ব্যবহার করুন

ACTION_SEND ইন্টেন্ট রিজলভারের স্ক্রিনশট।
একটি সু-সংজ্ঞায়িত টাস্ক ফ্লোর অংশ হিসেবে অন্য অ্যাপে ডেটা পাঠানোর সময় অ্যান্ড্রয়েড ইন্টেন্ট রেজলভার সবচেয়ে ভালোভাবে ব্যবহার করা হয়।
অ্যান্ড্রয়েড ইন্টেন্ট রেজলভার ব্যবহার করতে, একটি ইন্টেন্ট তৈরি করুন এবং অ্যান্ড্রয়েড শেয়ারশিট কল করার মতো অতিরিক্ত যোগ করুন। তবে, Intent.createChooser() কল করবেন না ।
যদি ACTION_SEND এবং MIME টাইপের সাথে মেলে এমন ফিল্টার সহ একাধিক ইনস্টল করা অ্যাপ্লিকেশন থাকে, তাহলে সিস্টেমটি একটি দ্ব্যর্থতা নিরসন ডায়ালগ প্রদর্শন করে যাকে ইনটেন্ট রেজলভার বলা হয় যা ব্যবহারকারীকে শেয়ার করার জন্য একটি লক্ষ্য নির্বাচন করতে দেয়। যদি একটি একক অ্যাপ্লিকেশন মিলে যায়, তবে এটি চলে।
টেক্সট পাঠানোর জন্য অ্যান্ড্রয়েড ইন্টেন্ট রেজলভার কীভাবে ব্যবহার করবেন তার একটি উদাহরণ এখানে দেওয়া হল:
কোটলিন
val sendIntent: Intent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "This is my text to send.") type = "text/plain" } startActivity(sendIntent)
জাভা
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);
আরও জানুন
ডেটা পাঠানোর বিষয়ে আরও তথ্যের জন্য, ইন্টেন্ট এবং ইন্টেন্ট ফিল্টার দেখুন।