অন্যান্য অ্যাপে সাধারণ ডেটা পাঠান

ব্যবহারকারীদের তাদের পছন্দের অ্যাপ ব্যবহার করে দ্রুত এবং সহজে তথ্য শেয়ার করতে অ্যান্ড্রয়েড ইন্টেন্ট এবং তাদের সম্পর্কিত অতিরিক্ত ব্যবহার করে।

অ্যান্ড্রয়েড ব্যবহারকারীদের অ্যাপগুলির মধ্যে ডেটা ভাগ করার দুটি উপায় সরবরাহ করে:

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

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

কেন অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করবেন

আমরা দৃঢ়ভাবে অ্যাপ্লিকেশান জুড়ে আপনার ব্যবহারকারীদের জন্য ধারাবাহিকতা তৈরি করতে Android শেয়ারশীট ব্যবহার করার পরামর্শ দিই৷ আপনার অ্যাপের শেয়ার টার্গেটের নিজস্ব তালিকা প্রদর্শন করবেন না বা আপনার নিজস্ব শেয়ারশীট বৈচিত্র তৈরি করবেন না।

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহারকারীদের সঠিক ব্যক্তির সাথে তথ্য শেয়ার করতে দেয়, প্রাসঙ্গিক অ্যাপের পরামর্শ সহ, সবগুলোই একটি ট্যাপ দিয়ে। শেয়ারশীট কাস্টম সমাধানগুলির জন্য অনুপলব্ধ লক্ষ্যগুলির পরামর্শ দিতে পারে এবং একটি সামঞ্জস্যপূর্ণ র্যাঙ্কিং ব্যবহার করে৷ এর কারণ হল শেয়ারশীট অ্যাপ এবং ব্যবহারকারীর কার্যকলাপ সম্পর্কে তথ্য বিবেচনা করতে পারে যা শুধুমাত্র সিস্টেমে উপলব্ধ।

অ্যান্ড্রয়েড শেয়ারশিটে ডেভেলপারদের জন্য অনেক সুবিধাজনক বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলি করতে পারেন:

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করুন

সকল প্রকার ভাগ করার জন্য, একটি অভিপ্রায় তৈরি করুন এবং এর ক্রিয়াটি Intent.ACTION_SEND সেট করুন৷ACTION_SEND৷ অ্যান্ড্রয়েড শেয়ারশীট প্রদর্শন করতে, Intent.createChooser() কল করুন, এটি আপনার Intent বস্তুটি পাস করুন। এটি আপনার অভিপ্রায়ের একটি সংস্করণ প্রদান করে যা সর্বদা Android শেয়ারশীট প্রদর্শন করে।

পাঠ্য সামগ্রী পাঠান

অ্যান্ড্রয়েড শেয়ারশীটের সবচেয়ে সহজবোধ্য এবং সাধারণ ব্যবহার হল একটি কার্যকলাপ থেকে অন্যটিতে পাঠ্য সামগ্রী পাঠানো। উদাহরণস্বরূপ, বেশিরভাগ ব্রাউজার বর্তমানে প্রদর্শিত পৃষ্ঠার 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 ডেটা সঞ্চয় করুন, নিশ্চিত করুন যে অন্যান্য অ্যাপ্লিকেশানগুলির আপনার প্রদানকারীকে অ্যাক্সেস করার সঠিক অনুমতি রয়েছে৷ অ্যাক্সেস প্রদানের জন্য পছন্দের পদ্ধতি হল প্রতি-ইউআরআই অনুমতিগুলি ব্যবহার করা, যা অস্থায়ী এবং শুধুমাত্র গ্রহীতা অ্যাপ্লিকেশনে অ্যাক্সেস প্রদান করে। এই ধরনের একটি ContentProvider তৈরি করার একটি সহজ উপায় হল FileProvider হেল্পার ক্লাস ব্যবহার করা।
  • MediaStore সিস্টেম ব্যবহার করুন। MediaStore মূলত ভিডিও, অডিও এবং ইমেজ MIME ধরনের জন্য। যাইহোক, অ্যান্ড্রয়েড 3.0 (API লেভেল 11) দিয়ে শুরু করে, এটি অ-মিডিয়া প্রকারগুলিও সঞ্চয় করতে পারে। আরও তথ্যের জন্য, MediaStore.Files দেখুন। scanFile() ব্যবহার করে ফাইলগুলি MediaStore ঢোকানো যেতে পারে, তারপরে শেয়ার করার জন্য উপযুক্ত একটি content:// -style Uri প্রদত্ত onScanCompleted() কলব্যাকে পাস করা হয়। মনে রাখবেন যে MediaStore সিস্টেমে একবার যোগ করা হলে, সামগ্রীটি ডিভাইসের যেকোনো অ্যাপে অ্যাক্সেসযোগ্য।

সঠিক MIME প্রকার ব্যবহার করুন

আপনি যে ডেটা পাঠাচ্ছেন তার জন্য উপলব্ধ সবচেয়ে নির্দিষ্ট MIME প্রকার সরবরাহ করুন৷ উদাহরণস্বরূপ, প্লেইন টেক্সট শেয়ার করার সময় text/plain ব্যবহার করুন। অ্যান্ড্রয়েডে সাধারণ ডেটা পাঠানোর সময় এখানে কয়েকটি সাধারণ 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 অফিসিয়াল রেজিস্ট্রি দেখুন।

প্রদত্ত MIME প্রকারের উপর নির্ভর করে Android শেয়ারশীট একটি বিষয়বস্তুর পূর্বরূপ দেখাতে পারে৷ কিছু পূর্বরূপ বৈশিষ্ট্য শুধুমাত্র নির্দিষ্ট ধরনের জন্য উপলব্ধ.

কন্টেন্ট একাধিক টুকরা শেয়ার করুন

বিষয়বস্তুর একাধিক অংশ ভাগ করতে, সামগ্রীর দিকে নির্দেশ করে ইউআরআইগুলির একটি তালিকা সহ ACTION_SEND_MULTIPLE অ্যাকশনটি ব্যবহার করুন৷ আপনি যে বিষয়বস্তু ভাগ করছেন তার মিশ্রণ অনুসারে 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 অবজেক্টগুলি এমন ডেটা নির্দেশ করে যা একটি গ্রহণকারী অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে৷

টেক্সট পূর্বরূপ সমৃদ্ধ বিষয়বস্তু যোগ করুন

অ্যান্ড্রয়েড 10 (এপিআই স্তর 29) থেকে শুরু করে, অ্যান্ড্রয়েড শেয়ারশিট ভাগ করা পাঠ্যের একটি পূর্বরূপ দেখায়। কিছু ক্ষেত্রে, শেয়ার করা টেক্সট বোঝা কঠিন হতে পারে। https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 এর মতো একটি জটিল URL শেয়ার করার কথা বিবেচনা করুন। একটি সমৃদ্ধ পূর্বরূপ আপনার ব্যবহারকারীদের আশ্বস্ত করতে পারে কি শেয়ার করা হচ্ছে।

আপনি যদি পাঠ্যের পূর্বরূপ দেখছেন, আপনি একটি শিরোনাম, একটি থাম্বনেইল চিত্র বা উভয়ই সেট করতে পারেন৷ Intent.createChooser() কল করার আগে Intent.EXTRA_TITLE এ একটি বিবরণ যোগ করুন এবং ClipData ব্যবহার করে একটি প্রাসঙ্গিক থাম্বনেল যোগ করুন।

দ্রষ্টব্য: চিত্র সামগ্রী URI একটি FileProvider থেকে প্রদান করা হয়, সাধারণত একটি কনফিগার করা <cache-path> থেকে। আরও তথ্যের জন্য, ফাইল শেয়ার করা দেখুন। আপনি থাম্বনেইল হিসাবে ব্যবহার করতে চান এমন যেকোনো ছবি পড়ার জন্য শেয়ারশীটকে সঠিক অনুমতি দিতে ভুলবেন না। আরও তথ্যের জন্য, 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));

পূর্বরূপ এই মত কিছু দেখায়:

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

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশনের স্ক্রিনশট।

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। কাস্টম অ্যাকশনগুলি অ্যান্ড্রয়েড শেয়ারশিটের শীর্ষে ছোট অ্যাকশন আইকন হিসাবে দেখানো হয় এবং আইকনটিতে ক্লিক করার সময় অ্যাপগুলি যে কোনও Intent অ্যাকশন হিসাবে উল্লেখ করতে পারে৷

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশন যোগ করতে প্রথমে ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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);

কাস্টম লক্ষ্য যোগ করুন

Android Sharesheet আপনাকে দুটি ChooserTarget অবজেক্ট নির্দিষ্ট করতে দেয় যা ChooserTargetServices থেকে লোড হওয়া শেয়ারিং শর্টকাট এবং চয়নকারী লক্ষ্যগুলির আগে দেখানো হয়। অ্যাপের পরামর্শের আগে তালিকাভুক্ত ক্রিয়াকলাপগুলির দিকে নির্দেশ করে আপনি দুটি পর্যন্ত ইন্টেন্টও নির্দিষ্ট করতে পারেন:

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 যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_INITIAL_INTENTS হল ব্যবহারকারীদের শেয়ার করা সামগ্রীতে অতিরিক্ত পদক্ষেপ প্রদান করা। উদাহরণস্বরূপ, একজন ব্যবহারকারী ছবি এবং Intent.EXTRA_INITIAL_INTENTS শেয়ার করেন। পরিবর্তে তাদের একটি লিঙ্ক পাঠাতে দেওয়ার জন্য EXTRA_INITIAL_INTENTS ব্যবহার করা হয়। Intent.EXTRA_CHOOSER_TARGETS যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_CHOOSER_TARGETS হল প্রাসঙ্গিক ব্যক্তি বা ডিভাইসগুলিকে দেখানো যা আপনার অ্যাপ প্রদান করে।

উপাদান দ্বারা নির্দিষ্ট লক্ষ্য বাদ

আপনি Intent.EXTRA_EXCLUDE_COMPONENTS প্রদান করে নির্দিষ্ট লক্ষ্যগুলি বাদ দিতে পারেন৷ 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);

শেয়ারিং সম্পর্কে তথ্য পান

আপনার ব্যবহারকারীরা কখন শেয়ার করছেন এবং তারা কোন টার্গেট নির্বাচন করছেন তা জানার জন্য এটি কার্যকর হতে পারে। অ্যান্ড্রয়েড শেয়ারশীট আপনাকে আপনার ব্যবহারকারীরা একটি 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_CHOSEN_COMPONENT এ দেখুন। EXTRA_CHOSEN_COMPONENT :

কোটলিন

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

জাভা

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

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

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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 অভিপ্রায় সমাধানকারীর স্ক্রিনশট।

একটি সু-সংজ্ঞায়িত টাস্ক ফ্লো-এর অংশ হিসেবে অন্য অ্যাপে ডেটা পাঠানোর সময় অ্যান্ড্রয়েড ইন্টেন্ট রিসোভার সবচেয়ে ভালো ব্যবহার করা হয়।

Android অভিপ্রায় সমাধানকারী ব্যবহার করতে, একটি অভিপ্রায় তৈরি করুন এবং অতিরিক্ত যোগ করুন যেমন আপনি Android Sharesheet কল করতে চান৷ যাইহোক, 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);

আরও জানুন

ডেটা পাঠানোর বিষয়ে আরও তথ্যের জন্য, ইন্টেন্ট এবং ইনটেন্ট ফিল্টার দেখুন।

,

ব্যবহারকারীদের তাদের পছন্দের অ্যাপ ব্যবহার করে দ্রুত এবং সহজে তথ্য শেয়ার করতে অ্যান্ড্রয়েড ইন্টেন্ট এবং তাদের সম্পর্কিত অতিরিক্ত ব্যবহার করে।

অ্যান্ড্রয়েড ব্যবহারকারীদের অ্যাপগুলির মধ্যে ডেটা ভাগ করার দুটি উপায় সরবরাহ করে:

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

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

কেন অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করবেন

আমরা দৃঢ়ভাবে অ্যাপ্লিকেশান জুড়ে আপনার ব্যবহারকারীদের জন্য ধারাবাহিকতা তৈরি করতে Android শেয়ারশীট ব্যবহার করার পরামর্শ দিই৷ আপনার অ্যাপের শেয়ার টার্গেটের নিজস্ব তালিকা প্রদর্শন করবেন না বা আপনার নিজস্ব শেয়ারশীট বৈচিত্র তৈরি করবেন না।

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহারকারীদের সঠিক ব্যক্তির সাথে তথ্য শেয়ার করতে দেয়, প্রাসঙ্গিক অ্যাপের পরামর্শ সহ, সবগুলোই একটি ট্যাপ দিয়ে। শেয়ারশীট কাস্টম সমাধানগুলির জন্য অনুপলব্ধ লক্ষ্যগুলির পরামর্শ দিতে পারে এবং একটি সামঞ্জস্যপূর্ণ র্যাঙ্কিং ব্যবহার করে৷ এর কারণ হল শেয়ারশীট অ্যাপ এবং ব্যবহারকারীর কার্যকলাপ সম্পর্কে তথ্য বিবেচনা করতে পারে যা শুধুমাত্র সিস্টেমে উপলব্ধ।

অ্যান্ড্রয়েড শেয়ারশিটে ডেভেলপারদের জন্য অনেক সুবিধাজনক বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলি করতে পারেন:

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করুন

সকল প্রকার ভাগ করার জন্য, একটি অভিপ্রায় তৈরি করুন এবং এর ক্রিয়াটি Intent.ACTION_SEND সেট করুন৷ACTION_SEND৷ অ্যান্ড্রয়েড শেয়ারশীট প্রদর্শন করতে, Intent.createChooser() কল করুন, এটি আপনার Intent বস্তুটি পাস করুন। এটি আপনার অভিপ্রায়ের একটি সংস্করণ প্রদান করে যা সর্বদা Android শেয়ারশীট প্রদর্শন করে।

পাঠ্য সামগ্রী পাঠান

অ্যান্ড্রয়েড শেয়ারশীটের সবচেয়ে সহজবোধ্য এবং সাধারণ ব্যবহার হল একটি কার্যকলাপ থেকে অন্যটিতে পাঠ্য সামগ্রী পাঠানো। উদাহরণস্বরূপ, বেশিরভাগ ব্রাউজার বর্তমানে প্রদর্শিত পৃষ্ঠার 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 ডেটা সঞ্চয় করুন, নিশ্চিত করুন যে অন্যান্য অ্যাপ্লিকেশানগুলির আপনার প্রদানকারীকে অ্যাক্সেস করার সঠিক অনুমতি রয়েছে৷ অ্যাক্সেস প্রদানের জন্য পছন্দের পদ্ধতি হল প্রতি-ইউআরআই অনুমতিগুলি ব্যবহার করা, যা অস্থায়ী এবং শুধুমাত্র গ্রহীতা অ্যাপ্লিকেশনে অ্যাক্সেস প্রদান করে। এই ধরনের একটি ContentProvider তৈরি করার একটি সহজ উপায় হল FileProvider হেল্পার ক্লাস ব্যবহার করা।
  • MediaStore সিস্টেম ব্যবহার করুন। MediaStore মূলত ভিডিও, অডিও এবং ইমেজ MIME ধরনের জন্য। যাইহোক, অ্যান্ড্রয়েড 3.0 (API লেভেল 11) দিয়ে শুরু করে, এটি অ-মিডিয়া প্রকারগুলিও সঞ্চয় করতে পারে। আরও তথ্যের জন্য, MediaStore.Files দেখুন। scanFile() ব্যবহার করে ফাইলগুলি MediaStore ঢোকানো যেতে পারে, তারপরে শেয়ার করার জন্য উপযুক্ত একটি content:// -style Uri প্রদত্ত onScanCompleted() কলব্যাকে পাস করা হয়। মনে রাখবেন যে MediaStore সিস্টেমে একবার যোগ করা হলে, সামগ্রীটি ডিভাইসের যেকোনো অ্যাপে অ্যাক্সেসযোগ্য।

সঠিক MIME প্রকার ব্যবহার করুন

আপনি যে ডেটা পাঠাচ্ছেন তার জন্য উপলব্ধ সবচেয়ে নির্দিষ্ট MIME প্রকার সরবরাহ করুন৷ উদাহরণস্বরূপ, প্লেইন টেক্সট শেয়ার করার সময় text/plain ব্যবহার করুন। অ্যান্ড্রয়েডে সাধারণ ডেটা পাঠানোর সময় এখানে কয়েকটি সাধারণ 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 অফিসিয়াল রেজিস্ট্রি দেখুন।

প্রদত্ত MIME প্রকারের উপর নির্ভর করে Android শেয়ারশীট একটি বিষয়বস্তুর পূর্বরূপ দেখাতে পারে৷ কিছু পূর্বরূপ বৈশিষ্ট্য শুধুমাত্র নির্দিষ্ট ধরনের জন্য উপলব্ধ.

কন্টেন্ট একাধিক টুকরা শেয়ার করুন

বিষয়বস্তুর একাধিক অংশ ভাগ করতে, সামগ্রীর দিকে নির্দেশ করে ইউআরআইগুলির একটি তালিকা সহ ACTION_SEND_MULTIPLE অ্যাকশনটি ব্যবহার করুন৷ আপনি যে বিষয়বস্তু ভাগ করছেন তার মিশ্রণ অনুসারে 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 অবজেক্টগুলি এমন ডেটা নির্দেশ করে যা একটি গ্রহণকারী অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে৷

টেক্সট পূর্বরূপ সমৃদ্ধ বিষয়বস্তু যোগ করুন

অ্যান্ড্রয়েড 10 (এপিআই স্তর 29) থেকে শুরু করে, অ্যান্ড্রয়েড শেয়ারশিট ভাগ করা পাঠ্যের একটি পূর্বরূপ দেখায়। কিছু ক্ষেত্রে, শেয়ার করা টেক্সট বোঝা কঠিন হতে পারে। https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 এর মতো একটি জটিল URL শেয়ার করার কথা বিবেচনা করুন। একটি সমৃদ্ধ পূর্বরূপ আপনার ব্যবহারকারীদের আশ্বস্ত করতে পারে কি শেয়ার করা হচ্ছে।

আপনি যদি পাঠ্যের পূর্বরূপ দেখছেন, আপনি একটি শিরোনাম, একটি থাম্বনেইল চিত্র বা উভয়ই সেট করতে পারেন৷ Intent.createChooser() কল করার আগে Intent.EXTRA_TITLE এ একটি বিবরণ যোগ করুন এবং ClipData ব্যবহার করে একটি প্রাসঙ্গিক থাম্বনেল যোগ করুন।

দ্রষ্টব্য: চিত্র সামগ্রী URI একটি FileProvider থেকে প্রদান করা হয়, সাধারণত একটি কনফিগার করা <cache-path> থেকে। আরও তথ্যের জন্য, ফাইল শেয়ার করা দেখুন। আপনি থাম্বনেইল হিসাবে ব্যবহার করতে চান এমন যেকোনো ছবি পড়ার জন্য শেয়ারশীটকে সঠিক অনুমতি দিতে ভুলবেন না। আরও তথ্যের জন্য, 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));

পূর্বরূপ এই মত কিছু দেখায়:

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

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশনের স্ক্রিনশট।

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। কাস্টম অ্যাকশনগুলি অ্যান্ড্রয়েড শেয়ারশিটের শীর্ষে ছোট অ্যাকশন আইকন হিসাবে দেখানো হয় এবং আইকনটিতে ক্লিক করার সময় অ্যাপগুলি যে কোনও Intent অ্যাকশন হিসাবে উল্লেখ করতে পারে৷

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশন যোগ করতে প্রথমে ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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);

কাস্টম লক্ষ্য যোগ করুন

Android Sharesheet আপনাকে দুটি ChooserTarget অবজেক্ট নির্দিষ্ট করতে দেয় যা ChooserTargetServices থেকে লোড হওয়া শেয়ারিং শর্টকাট এবং চয়নকারী লক্ষ্যগুলির আগে দেখানো হয়। অ্যাপের পরামর্শের আগে তালিকাভুক্ত ক্রিয়াকলাপগুলির দিকে নির্দেশ করে আপনি দুটি পর্যন্ত ইন্টেন্টও নির্দিষ্ট করতে পারেন:

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 যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_INITIAL_INTENTS হল ব্যবহারকারীদের শেয়ার করা সামগ্রীতে অতিরিক্ত পদক্ষেপ প্রদান করা। উদাহরণস্বরূপ, একজন ব্যবহারকারী ছবি এবং Intent.EXTRA_INITIAL_INTENTS শেয়ার করেন। পরিবর্তে তাদের একটি লিঙ্ক পাঠাতে দেওয়ার জন্য EXTRA_INITIAL_INTENTS ব্যবহার করা হয়। Intent.EXTRA_CHOOSER_TARGETS যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_CHOOSER_TARGETS হল প্রাসঙ্গিক ব্যক্তি বা ডিভাইসগুলিকে দেখানো যা আপনার অ্যাপ প্রদান করে।

উপাদান দ্বারা নির্দিষ্ট লক্ষ্য বাদ

আপনি Intent.EXTRA_EXCLUDE_COMPONENTS প্রদান করে নির্দিষ্ট লক্ষ্যগুলি বাদ দিতে পারেন৷ 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);

শেয়ারিং সম্পর্কে তথ্য পান

আপনার ব্যবহারকারীরা কখন শেয়ার করছেন এবং তারা কোন টার্গেট নির্বাচন করছেন তা জানার জন্য এটি কার্যকর হতে পারে। অ্যান্ড্রয়েড শেয়ারশীট আপনাকে আপনার ব্যবহারকারীরা একটি 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_CHOSEN_COMPONENT এ দেখুন। EXTRA_CHOSEN_COMPONENT :

কোটলিন

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

জাভা

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

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

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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 অভিপ্রায় সমাধানকারীর স্ক্রিনশট।

একটি সু-সংজ্ঞায়িত টাস্ক ফ্লো-এর অংশ হিসেবে অন্য অ্যাপে ডেটা পাঠানোর সময় অ্যান্ড্রয়েড ইন্টেন্ট রিসোভার সবচেয়ে ভালো ব্যবহার করা হয়।

Android অভিপ্রায় সমাধানকারী ব্যবহার করতে, একটি অভিপ্রায় তৈরি করুন এবং অতিরিক্ত যোগ করুন যেমন আপনি Android Sharesheet কল করতে চান৷ যাইহোক, 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);

আরও জানুন

ডেটা পাঠানোর বিষয়ে আরও তথ্যের জন্য, ইন্টেন্ট এবং ইনটেন্ট ফিল্টার দেখুন।

,

ব্যবহারকারীদের তাদের পছন্দের অ্যাপ ব্যবহার করে দ্রুত এবং সহজে তথ্য শেয়ার করতে অ্যান্ড্রয়েড ইন্টেন্ট এবং তাদের সম্পর্কিত অতিরিক্ত ব্যবহার করে।

অ্যান্ড্রয়েড ব্যবহারকারীদের অ্যাপগুলির মধ্যে ডেটা ভাগ করার দুটি উপায় সরবরাহ করে:

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

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

কেন অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করবেন

আমরা দৃঢ়ভাবে অ্যাপ্লিকেশান জুড়ে আপনার ব্যবহারকারীদের জন্য ধারাবাহিকতা তৈরি করতে Android শেয়ারশীট ব্যবহার করার পরামর্শ দিই৷ আপনার অ্যাপের শেয়ার টার্গেটের নিজস্ব তালিকা প্রদর্শন করবেন না বা আপনার নিজস্ব শেয়ারশীট বৈচিত্র তৈরি করবেন না।

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহারকারীদের সঠিক ব্যক্তির সাথে তথ্য শেয়ার করতে দেয়, প্রাসঙ্গিক অ্যাপের পরামর্শ সহ, সবগুলোই একটি ট্যাপ দিয়ে। শেয়ারশীট কাস্টম সমাধানগুলির জন্য অনুপলব্ধ লক্ষ্যগুলির পরামর্শ দিতে পারে এবং একটি সামঞ্জস্যপূর্ণ র্যাঙ্কিং ব্যবহার করে৷ এর কারণ হল শেয়ারশীট অ্যাপ এবং ব্যবহারকারীর কার্যকলাপ সম্পর্কে তথ্য বিবেচনা করতে পারে যা শুধুমাত্র সিস্টেমে উপলব্ধ।

অ্যান্ড্রয়েড শেয়ারশিটে ডেভেলপারদের জন্য অনেক সুবিধাজনক বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলি করতে পারেন:

অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করুন

সকল প্রকার ভাগ করার জন্য, একটি অভিপ্রায় তৈরি করুন এবং এর ক্রিয়াটি Intent.ACTION_SEND সেট করুন৷ACTION_SEND৷ অ্যান্ড্রয়েড শেয়ারশীট প্রদর্শন করতে, Intent.createChooser() কল করুন, এটি আপনার Intent বস্তুটি পাস করুন। এটি আপনার অভিপ্রায়ের একটি সংস্করণ প্রদান করে যা সর্বদা Android শেয়ারশীট প্রদর্শন করে।

পাঠ্য সামগ্রী পাঠান

অ্যান্ড্রয়েড শেয়ারশীটের সবচেয়ে সহজবোধ্য এবং সাধারণ ব্যবহার হল একটি কার্যকলাপ থেকে অন্যটিতে পাঠ্য সামগ্রী পাঠানো। উদাহরণস্বরূপ, বেশিরভাগ ব্রাউজার বর্তমানে প্রদর্শিত পৃষ্ঠার 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 ডেটা সঞ্চয় করুন, নিশ্চিত করুন যে অন্যান্য অ্যাপ্লিকেশানগুলির আপনার প্রদানকারীকে অ্যাক্সেস করার সঠিক অনুমতি রয়েছে৷ অ্যাক্সেস প্রদানের জন্য পছন্দের পদ্ধতি হল প্রতি-ইউআরআই অনুমতিগুলি ব্যবহার করা, যা অস্থায়ী এবং শুধুমাত্র গ্রহীতা অ্যাপ্লিকেশনে অ্যাক্সেস প্রদান করে। এই ধরনের একটি ContentProvider তৈরি করার একটি সহজ উপায় হল FileProvider হেল্পার ক্লাস ব্যবহার করা।
  • MediaStore সিস্টেম ব্যবহার করুন। MediaStore মূলত ভিডিও, অডিও এবং ইমেজ MIME ধরনের জন্য। যাইহোক, অ্যান্ড্রয়েড 3.0 (API লেভেল 11) দিয়ে শুরু করে, এটি অ-মিডিয়া প্রকারগুলিও সঞ্চয় করতে পারে। আরও তথ্যের জন্য, MediaStore.Files দেখুন। scanFile() ব্যবহার করে ফাইলগুলি MediaStore ঢোকানো যেতে পারে, তারপরে শেয়ার করার জন্য উপযুক্ত একটি content:// -style Uri প্রদত্ত onScanCompleted() কলব্যাকে পাস করা হয়। মনে রাখবেন যে MediaStore সিস্টেমে একবার যোগ করা হলে, সামগ্রীটি ডিভাইসের যেকোনো অ্যাপে অ্যাক্সেসযোগ্য।

সঠিক MIME প্রকার ব্যবহার করুন

আপনি যে ডেটা পাঠাচ্ছেন তার জন্য উপলব্ধ সবচেয়ে নির্দিষ্ট MIME প্রকার সরবরাহ করুন৷ উদাহরণস্বরূপ, প্লেইন টেক্সট শেয়ার করার সময় text/plain ব্যবহার করুন। অ্যান্ড্রয়েডে সাধারণ ডেটা পাঠানোর সময় এখানে কয়েকটি সাধারণ 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 অফিসিয়াল রেজিস্ট্রি দেখুন।

প্রদত্ত MIME প্রকারের উপর নির্ভর করে Android শেয়ারশীট একটি বিষয়বস্তুর পূর্বরূপ দেখাতে পারে৷ কিছু পূর্বরূপ বৈশিষ্ট্য শুধুমাত্র নির্দিষ্ট ধরনের জন্য উপলব্ধ.

কন্টেন্ট একাধিক টুকরা শেয়ার করুন

বিষয়বস্তুর একাধিক অংশ ভাগ করতে, সামগ্রীর দিকে নির্দেশ করে ইউআরআইগুলির একটি তালিকা সহ ACTION_SEND_MULTIPLE অ্যাকশনটি ব্যবহার করুন৷ আপনি যে বিষয়বস্তু ভাগ করছেন তার মিশ্রণ অনুসারে 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 অবজেক্টগুলি এমন ডেটা নির্দেশ করে যা একটি গ্রহণকারী অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে৷

টেক্সট পূর্বরূপ সমৃদ্ধ বিষয়বস্তু যোগ করুন

অ্যান্ড্রয়েড 10 (এপিআই স্তর 29) থেকে শুরু করে, অ্যান্ড্রয়েড শেয়ারশিট ভাগ করা পাঠ্যের একটি পূর্বরূপ দেখায়। কিছু ক্ষেত্রে, শেয়ার করা টেক্সট বোঝা কঠিন হতে পারে। https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 এর মতো একটি জটিল URL শেয়ার করার কথা বিবেচনা করুন। একটি সমৃদ্ধ পূর্বরূপ আপনার ব্যবহারকারীদের আশ্বস্ত করতে পারে কি শেয়ার করা হচ্ছে।

আপনি যদি পাঠ্যের পূর্বরূপ দেখছেন, আপনি একটি শিরোনাম, একটি থাম্বনেইল চিত্র বা উভয়ই সেট করতে পারেন৷ Intent.createChooser() কল করার আগে Intent.EXTRA_TITLE এ একটি বিবরণ যোগ করুন এবং ClipData ব্যবহার করে একটি প্রাসঙ্গিক থাম্বনেল যোগ করুন।

দ্রষ্টব্য: চিত্র সামগ্রী URI একটি FileProvider থেকে প্রদান করা হয়, সাধারণত একটি কনফিগার করা <cache-path> থেকে। আরও তথ্যের জন্য, ফাইল শেয়ার করা দেখুন। আপনি থাম্বনেইল হিসাবে ব্যবহার করতে চান এমন যেকোনো ছবি পড়ার জন্য শেয়ারশীটকে সঠিক অনুমতি দিতে ভুলবেন না। আরও তথ্যের জন্য, 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));

পূর্বরূপ এই মত কিছু দেখায়:

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

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশনের স্ক্রিনশট।

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। কাস্টম অ্যাকশনগুলি অ্যান্ড্রয়েড শেয়ারশিটের শীর্ষে ছোট অ্যাকশন আইকন হিসাবে দেখানো হয় এবং আইকনটিতে ক্লিক করার সময় অ্যাপগুলি যে কোনও Intent অ্যাকশন হিসাবে উল্লেখ করতে পারে৷

অ্যান্ড্রয়েড শেয়ারশীটে কাস্টম অ্যাকশন যোগ করতে প্রথমে ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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);

কাস্টম লক্ষ্য যোগ করুন

Android Sharesheet আপনাকে দুটি ChooserTarget অবজেক্ট নির্দিষ্ট করতে দেয় যা ChooserTargetServices থেকে লোড হওয়া শেয়ারিং শর্টকাট এবং চয়নকারী লক্ষ্যগুলির আগে দেখানো হয়। অ্যাপের পরামর্শের আগে তালিকাভুক্ত ক্রিয়াকলাপগুলির দিকে নির্দেশ করে আপনি দুটি পর্যন্ত ইন্টেন্টও নির্দিষ্ট করতে পারেন:

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 যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_INITIAL_INTENTS হল ব্যবহারকারীদের শেয়ার করা সামগ্রীতে অতিরিক্ত পদক্ষেপ প্রদান করা। উদাহরণস্বরূপ, একজন ব্যবহারকারী ছবি এবং Intent.EXTRA_INITIAL_INTENTS শেয়ার করেন। পরিবর্তে তাদের একটি লিঙ্ক পাঠাতে দেওয়ার জন্য EXTRA_INITIAL_INTENTS ব্যবহার করা হয়। Intent.EXTRA_CHOOSER_TARGETS যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ। EXTRA_CHOOSER_TARGETS হল প্রাসঙ্গিক ব্যক্তি বা ডিভাইসগুলিকে দেখানো যা আপনার অ্যাপ প্রদান করে।

উপাদান দ্বারা নির্দিষ্ট লক্ষ্য বাদ

আপনি Intent.EXTRA_EXCLUDE_COMPONENTS প্রদান করে নির্দিষ্ট লক্ষ্যগুলি বাদ দিতে পারেন৷ 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);

শেয়ারিং সম্পর্কে তথ্য পান

আপনার ব্যবহারকারীরা কখন শেয়ার করছেন এবং তারা কোন টার্গেট নির্বাচন করছেন তা জানার জন্য এটি কার্যকর হতে পারে। অ্যান্ড্রয়েড শেয়ারশীট আপনাকে আপনার ব্যবহারকারীরা একটি 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_CHOSEN_COMPONENT এ দেখুন। EXTRA_CHOSEN_COMPONENT :

কোটলিন

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

জাভা

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

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

অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং তার উপরে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। ChooserAction.Builder দিয়ে একটি ChooserAction তৈরি করুন। আইকনটিতে ক্লিক করার সময় আপনি একটি PendingIntent উল্লেখ করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সমন্বিত একটি অ্যারে তৈরি করুন এবং শেয়ারের 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 অভিপ্রায় সমাধানকারীর স্ক্রিনশট।

একটি সু-সংজ্ঞায়িত টাস্ক ফ্লো-এর অংশ হিসেবে অন্য অ্যাপে ডেটা পাঠানোর সময় অ্যান্ড্রয়েড ইন্টেন্ট রিসোভার সবচেয়ে ভালো ব্যবহার করা হয়।

Android অভিপ্রায় সমাধানকারী ব্যবহার করতে, একটি অভিপ্রায় তৈরি করুন এবং অতিরিক্ত যোগ করুন যেমন আপনি Android Sharesheet কল করতে চান৷ যাইহোক, 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);

আরও জানুন

ডেটা পাঠানোর বিষয়ে আরও তথ্যের জন্য, ইন্টেন্ট এবং ইনটেন্ট ফিল্টার দেখুন।