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

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

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

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

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

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

আপনার ব্যবহারকারীদের জন্য অ্যাপ জুড়ে সামঞ্জস্য তৈরি করতে আমরা অ্যান্ড্রয়েড শেয়ারশিট ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করি। আপনার অ্যাপের নিজস্ব শেয়ার টার্গেটের তালিকা প্রদর্শন করবেন না বা আপনার নিজস্ব শেয়ারশিট সংস্করণ তৈরি করবেন না।

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

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

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

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

টেক্সট কন্টেন্ট পাঠান

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

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

    val shareIntent = Intent.createChooser(sendIntent, null)
    context.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 রাখুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে। এটি সাধারণত একটি ছবি শেয়ার করার জন্য ব্যবহৃত হয়, তবে যেকোনো ধরনের বাইনারি কন্টেন্ট শেয়ার করতেও ব্যবহার করা যেতে পারে।

fun shareBinaryContent(context: Context) {
    val shareIntent: Intent = Intent().apply {
        action = ACTION_SEND
        // Example: content://com.google.android.apps.photos.contentprovider/...
        val imageUri: Uri =
            Uri.parse("content://com.google.android.apps.photos.contentprovider/0/1/mediakey/1")
        putExtra(Intent.EXTRA_STREAM, imageUri)
        type = "image/jpeg"
    }
    context.startActivity(Intent.createChooser(shareIntent, null))
}

Uri টি যে ডেটা নির্দেশ করে, তা অ্যাক্সেস করার জন্য গ্রহণকারী অ্যাপ্লিকেশনটির অনুমতি প্রয়োজন। এটি করার জন্য দুটি প্রস্তাবিত উপায় রয়েছে:

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

প্রদত্ত MIME টাইপের উপর নির্ভর করে অ্যান্ড্রয়েড শেয়ারশিটে কন্টেন্টের প্রিভিউ দেখা যেতে পারে। কিছু প্রিভিউ ফিচার শুধুমাত্র নির্দিষ্ট টাইপের জন্যই উপলব্ধ।

একাধিক বিষয়বস্তু শেয়ার করুন

একাধিক কন্টেন্ট শেয়ার করতে, কন্টেন্টের URI-গুলোর একটি তালিকার সাথে ACTION_SEND_MULTIPLE অ্যাকশনটি ব্যবহার করুন। আপনি যে ধরনের কন্টেন্ট শেয়ার করছেন, তার মিশ্রণ অনুযায়ী MIME টাইপ পরিবর্তিত হয়। উদাহরণস্বরূপ, যদি আপনি তিনটি JPEG ইমেজ শেয়ার করেন, তাহলে আপনি "image/jpg" টাইপটি ব্যবহার করবেন। বিভিন্ন ধরনের ইমেজের মিশ্রণের জন্য, "image/*" ব্যবহার করুন, যা এমন একটি অ্যাক্টিভিটির সাথে মেলে যা যেকোনো ধরনের ইমেজ পরিচালনা করতে পারে। যদিও বিভিন্ন ধরনের মিশ্রণ শেয়ার করা সম্ভব, আমরা এটিকে তীব্রভাবে নিরুৎসাহিত করি, কারণ প্রাপকের কাছে এটি অস্পষ্ট থাকে যে কী পাঠানো হচ্ছে। যদি একাধিক ধরনের ডেটা পাঠানো আবশ্যক হয়, "*/*" ব্যবহার করুন। আপনার ডেটা পার্স এবং প্রসেস করার দায়িত্ব প্রাপক অ্যাপ্লিকেশনের। এখানে একটি উদাহরণ দেওয়া হলো:

fun shareMultiple(context: Context) {
    val imageUris: ArrayList<Uri> = arrayListOf(
        Uri.parse("content://com.google.android.apps.photos.contentprovider/0/1/mediakey/1"),
        Uri.parse("content://com.google.android.apps.photos.contentprovider/0/1/mediakey/2")
    )

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

নিশ্চিত করুন যে প্রদত্ত Uri অবজেক্টগুলো এমন ডেটার দিকে নির্দেশ করে যা গ্রহণকারী অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে।

টেক্সট প্রিভিউতে রিচ কন্টেন্ট যোগ করুন

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

আপনি যদি টেক্সট প্রিভিউ করেন, তাহলে একটি টাইটেল, একটি থাম্বনেইল ইমেজ অথবা উভয়ই সেট করতে পারেন। Intent.createChooser() কল করার আগে Intent.EXTRA_TITLE এ একটি ডেসক্রিপশন যোগ করুন এবং ClipData ব্যবহার করে একটি প্রাসঙ্গিক থাম্বনেইল যুক্ত করুন।

দ্রষ্টব্য: ছবির কন্টেন্ট URI একটি FileProvider থেকে সরবরাহ করা হয়, সাধারণত একটি কনফিগার করা <cache-path> থেকে। আরও তথ্যের জন্য, ফাইল শেয়ারিং দেখুন। থাম্বনেইল হিসেবে ব্যবহার করতে চান এমন যেকোনো ছবি পড়ার জন্য Sharesheet-কে সঠিক অনুমতি দিতে ভুলবেন না। আরও তথ্যের জন্য, Intent.FLAG_GRANT_READ_URI_PERMISSION দেখুন।

এখানে একটি উদাহরণ দেওয়া হলো:

fun richContentToTextPreviewShares(context: Context) {
    val share = Intent.createChooser(
        Intent().apply {
            action = 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 =
                Uri.parse("content://com.google.android.apps.photos.contentprovider/0/1/mediakey/A123456789")
            flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
        },
        null
    )
    context.startActivity(share)
}

প্রিভিউটি দেখতে অনেকটা এইরকম:

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

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

অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) এবং তার উপরের সংস্করণগুলিতে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। কাস্টম অ্যাকশনগুলি অ্যান্ড্রয়েড শেয়ারশিটের উপরে ছোট অ্যাকশন আইকন হিসাবে দেখানো হয় এবং আইকনটিতে ক্লিক করা হলে যে অ্যাকশনটি কার্যকর হবে, তার জন্য অ্যাপগুলি যেকোনো Intent নির্দিষ্ট করে দিতে পারে।

অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে, প্রথমে ChooserAction.Builder ব্যবহার করে একটি ChooserAction তৈরি করুন। আইকনে ক্লিক করা হলে যে অ্যাকশনটি কার্যকর হবে, তার জন্য আপনি একটি PendingIntent নির্দিষ্ট করতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সম্বলিত একটি অ্যারে তৈরি করুন এবং সেটিকে শেয়ার Intent এর EXTRA_CHOOSER_CUSTOM_ACTIONS হিসেবে নির্দিষ্ট করুন।

fun sharesheetCustomActions(context: Context, previewText: String) {
    val sendIntent = Intent(ACTION_SEND)
        .setType("text/plain")
        .putExtra(Intent.EXTRA_TEXT, previewText)
    val shareIntent = Intent.createChooser(sendIntent, null)
    val customActions = arrayOf(
        ChooserAction.Builder(
            Icon.createWithResource(context, R.drawable.ic_logo),
            "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)
}

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

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

Intent.createChooser() কল করার পর আপনার শেয়ার ইন্টেন্টে Intent.EXTRA_CHOOSER_TARGETS এবং Intent.EXTRA_INITIAL_INTENTS যোগ করুন:

val share = Intent.createChooser(shareIntent, null).apply {
    putExtra(
        Intent.EXTRA_CHOOSER_TARGETS,
        arrayOf(chooserTargetJessica, chooserTargetSpyros)
    )
    putExtra(
        Intent.EXTRA_INITIAL_INTENTS,
        arrayOf(intentTargetNearbyShare, intentTargetMaps)
    )
}

এই ফিচারটি সতর্কতার সাথে ব্যবহার করুন। আপনার যোগ করা প্রতিটি কাস্টম Intent এবং ChooserTarget সিস্টেমের সাজেস্ট করা সংখ্যার পরিমাণ কমিয়ে দেয়। আমরা সাধারণত কাস্টম টার্গেট যোগ করতে নিরুৎসাহিত করি। Intent.EXTRA_INITIAL_INTENTS যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ হলো শেয়ার করা কন্টেন্টের উপর ব্যবহারকারীদের অতিরিক্ত অ্যাকশন নেওয়ার সুযোগ দেওয়া। যেমন, একজন ব্যবহারকারী ছবি শেয়ার করলেন এবং Intent.EXTRA_INITIAL_INTENTS ব্যবহার করে তাকে ছবির পরিবর্তে একটি লিঙ্ক পাঠানোর সুযোগ দেওয়া হলো। Intent.EXTRA_CHOOSER_TARGETS যোগ করার একটি সাধারণ উপযুক্ত উদাহরণ হলো আপনার অ্যাপ দ্বারা সরবরাহ করা প্রাসঙ্গিক ব্যক্তি বা ডিভাইসগুলোকে সামনে নিয়ে আসা।

উপাদান অনুসারে নির্দিষ্ট লক্ষ্যবস্তু বাদ দিন

আপনি Intent.EXTRA_EXCLUDE_COMPONENTS প্রদান করে নির্দিষ্ট টার্গেট বাদ দিতে পারেন। শুধুমাত্র আপনার নিয়ন্ত্রণে থাকা টার্গেটগুলো সরানোর জন্যই এটি করুন। এর একটি সাধারণ ব্যবহার হলো, যখন ব্যবহারকারীরা আপনার অ্যাপের ভেতর থেকে শেয়ার করেন, তখন অ্যাপের শেয়ার টার্গেটগুলো লুকিয়ে রাখা, কারণ তাদের উদ্দেশ্য সম্ভবত অ্যাপের বাইরে শেয়ার করা।

Intent.createChooser() কল করার পর আপনার ইন্টেন্টে Intent.EXTRA_EXCLUDE_COMPONENTS যোগ করুন:

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

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

আপনার ব্যবহারকারীরা কখন শেয়ার করছেন এবং তারা কোন টার্গেট নির্বাচন করছেন, তা জানা উপকারী হতে পারে। অ্যান্ড্রয়েড শেয়ারশিট আপনাকে একটি IntentSender ব্যবহার করে ব্যবহারকারীদের নির্বাচিত টার্গেটগুলোর ComponentName প্রদানের মাধ্যমে এই তথ্য পেতে সাহায্য করে।

প্রথমে একটি BroadcastReceiver জন্য একটি PendingIntent তৈরি করুন এবং Intent.createChooser() -এ এর IntentSender সরবরাহ করুন:

fun infoAboutSharing(context: Context, requestCode: Int) {
    var share = Intent(ACTION_SEND)
    // ...
    val pi = PendingIntent.getBroadcast(
        context, requestCode,
        Intent(context, ShareBroadcastReceiver::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )
    share = Intent.createChooser(share, null, pi.intentSender)
    context.startActivity(share)
}

MyBroadcastReceiver এ কলব্যাকটি গ্রহণ করুন এবং Intent.EXTRA_CHOOSER_RESULT এ দেখুন:

override fun onReceive(context: Context?, intent: Intent) {
    val TAG = ShareBroadcastReceiver::class.simpleName
    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")
}
আরও তথ্যের জন্য প্ল্যাটফর্ম শেয়ারের নমুনা দেখুন:

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

অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) এবং তার উপরের সংস্করণগুলিতে, অ্যাপগুলি অ্যান্ড্রয়েড শেয়ারশিটে কাস্টম অ্যাকশন যোগ করতে পারে। ChooserAction.Builder ব্যবহার করে একটি ChooserAction তৈরি করুন। আইকনে ক্লিক করা হলে যে অ্যাকশনটি চালু হবে, তার জন্য আপনি একটি PendingIntent নির্দিষ্ট করে দিতে পারেন। আপনার সমস্ত কাস্টম অ্যাকশন সম্বলিত একটি অ্যারে তৈরি করুন এবং সেটিকে শেয়ার Intent EXTRA_CHOOSER_CUSTOM_ACTIONS হিসেবে নির্দিষ্ট করে দিন।

fun customActions(context: Context, text: String) {
    val sendIntent = 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_logo),
            "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)
}

অ্যান্ড্রয়েড ইন্টেন্ট রিজলভার ব্যবহার করুন

ACTION_SEND ইন্টেন্ট রিজলভারের স্ক্রিনশট।

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

অ্যান্ড্রয়েড ইন্টেন্ট রিজলভার ব্যবহার করতে, অ্যান্ড্রয়েড শেয়ারশিট কল করার মতোই একটি ইন্টেন্ট তৈরি করুন এবং এক্সট্রা যোগ করুন। তবে, Intent.createChooser() কল করবেন না

যদি ACTION_SEND এবং MIME টাইপের সাথে মিলে যায় এমন ফিল্টারসহ একাধিক ইনস্টল করা অ্যাপ্লিকেশন থাকে, তাহলে সিস্টেমটি ইন্টেন্ট রিজলভার নামক একটি ডিসঅ্যাম্বিগুয়েশন ডায়ালগ প্রদর্শন করে, যা ব্যবহারকারীকে শেয়ার করার জন্য একটি টার্গেট বেছে নিতে দেয়। যদি একটিমাত্র অ্যাপ্লিকেশন মিলে যায়, তবে সেটি রান করে।

অ্যান্ড্রয়েড ইনটেন্ট রিজলভার ব্যবহার করে কীভাবে টেক্সট পাঠানো যায় তার একটি উদাহরণ নিচে দেওয়া হলো:

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

আরও জানুন

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