একটি অ্যাপ যেমন অন্য অ্যাপে ডেটা পাঠাতে পারে, তেমনি এটি অন্যান্য অ্যাপ থেকেও ডেটা গ্রহণ করতে পারে। ব্যবহারকারীরা আপনার অ্যাপ্লিকেশনের সাথে কীভাবে ইন্টারঅ্যাক্ট করে এবং আপনি অন্যান্য অ্যাপ্লিকেশন থেকে কোন ধরণের ডেটা পেতে চান তা ভেবে দেখুন। উদাহরণস্বরূপ, একটি সোশ্যাল নেটওয়ার্কিং অ্যাপ্লিকেশন অন্য অ্যাপ থেকে টেক্সট কন্টেন্ট, যেমন একটি আকর্ষণীয় ওয়েব URL, পেতে আগ্রহী হতে পারে।
অন্যান্য অ্যাপের ব্যবহারকারীরা প্রায়শই অ্যান্ড্রয়েড শেয়ারশিট বা ইনটেন্ট রেজোলভারের মাধ্যমে আপনার অ্যাপে ডেটা পাঠান। যেসব অ্যাপ আপনার অ্যাপে ডেটা পাঠায় তাদের অবশ্যই সেই ডেটার জন্য একটি MIME টাইপ সেট করতে হবে। আপনার অ্যাপটি নিম্নলিখিত উপায়ে অন্য অ্যাপের পাঠানো ডেটা গ্রহণ করতে পারে:
- ম্যানিফেস্টে একটি ম্যাচিং
intent-filterট্যাগ সহ একটিActivity - আপনার অ্যাপ দ্বারা প্রকাশিত শর্টকাট শেয়ার করা।
ডাইরেক্ট শেয়ার টার্গেট হল আপনার অ্যাপের মধ্যে একটি নির্দিষ্ট অ্যাক্টিভিটির গভীর লিঙ্ক। এগুলি প্রায়শই কোনও ব্যক্তি বা গোষ্ঠীর প্রতিনিধিত্ব করে এবং অ্যান্ড্রয়েড শেয়ারশিট সেগুলি দেখায়। উদাহরণস্বরূপ, একটি মেসেজিং অ্যাপ এমন একজন ব্যক্তির জন্য একটি ডাইরেক্ট শেয়ার টার্গেট প্রদান করতে পারে যা সরাসরি সেই ব্যক্তির সাথে কথোপকথনে গভীর লিঙ্ক করে। বিস্তারিত নির্দেশাবলীর জন্য ডাইরেক্ট শেয়ার টার্গেট প্রদান করুন দেখুন।
MIME প্রকারগুলি সমর্থন করুন
আদর্শভাবে, একটি অ্যাপকে সর্বাধিক সম্ভাব্য MIME প্রকারগুলি গ্রহণ করতে সক্ষম হতে হবে। উদাহরণস্বরূপ, টেক্সট, ছবি এবং ভিডিও পাঠানোর জন্য তৈরি একটি মেসেজিং অ্যাপ আদর্শভাবে text/* , image/* এবং video/* গ্রহণকে সমর্থন করে। অ্যান্ড্রয়েডে সহজ ডেটা প্রেরণ এবং গ্রহণের জন্য এখানে কয়েকটি সাধারণ MIME প্রকার রয়েছে।
| প্রাপকরা নিবন্ধন করেন | প্রেরকরা পাঠান |
|---|---|
text/* |
|
`image/*` |
|
video/* |
|
| সমর্থিত ফাইল এক্সটেনশন | application/pdf |
MIME মিডিয়া টাইপের IANA অফিসিয়াল রেজিস্ট্রি দেখুন।
দুর্দান্ত শেয়ার লক্ষ্য তৈরি করুন
যখন কোনও ব্যবহারকারী কোনও নির্দিষ্ট কার্যকলাপের সাথে সম্পর্কিত কোনও শেয়ার টার্গেটে ট্যাপ করেন, তখন তারা শেয়ার করা বিষয়বস্তু ব্যবহার করার আগে নিশ্চিত করতে এবং সম্পাদনা করতে সক্ষম হবেন। এটি বিশেষ করে টেক্সট ডেটার জন্য গুরুত্বপূর্ণ।
একটি কার্যকলাপ সহ ডেটা গ্রহণ করুন
কোনও কার্যকলাপের মাধ্যমে ডেটা গ্রহণের মধ্যে আপনার ম্যানিফেস্ট আপডেট করা, আগত সামগ্রী পরিচালনা করা এবং ব্যবহারকারী আপনার অ্যাপটিকে চিনতে পারছে কিনা তা নিশ্চিত করা জড়িত।
আপনার ম্যানিফেস্ট আপডেট করুন
ইন্টেন্ট ফিল্টার সিস্টেমকে জানায় যে কোন অ্যাপ কম্পোনেন্ট কোন ইন্টেন্ট গ্রহণ করে। "অন্যান্য অ্যাপে সহজ ডেটা পাঠানো" পাঠে ACTION_SEND অ্যাকশনের মাধ্যমে আপনি যেভাবে একটি ইন্টেন্ট তৈরি করেছেন, ঠিক তেমনই আপনি এই অ্যাকশনের মাধ্যমে ইন্টেন্ট গ্রহণের জন্য ইন্টেন্ট ফিল্টার তৈরি করেন। আপনি <intent-filter> উপাদান ব্যবহার করে আপনার ম্যানিফেস্টে একটি ইন্টেন্ট ফিল্টার সংজ্ঞায়িত করেন। উদাহরণস্বরূপ, যদি আপনার অ্যাপ টেক্সট কন্টেন্ট গ্রহণ পরিচালনা করে, তাহলে যেকোনো ধরণের এক বা একাধিক ছবি ধারণকারী একটি ম্যানিফেস্ট নিম্নলিখিত স্নিপেটের মতো দেখাবে:
<activity android:name=".ui.MyActivity" > <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </activity>
যখন অন্য কোনও অ্যাপ একটি ইন্টেন্ট তৈরি করে এবং startActivity() এ পাস করে এই জিনিসগুলির কোনওটি শেয়ার করার চেষ্টা করে, তখন আপনার অ্যাপ্লিকেশনটি Android Sharesheet বা intent resolver-এ একটি বিকল্প হিসাবে তালিকাভুক্ত হয়। যদি ব্যবহারকারী আপনার অ্যাপটি নির্বাচন করে, তাহলে এটি সংশ্লিষ্ট কার্যকলাপ (পূর্ববর্তী উদাহরণে .ui.MyActivity ) শুরু করে। তারপর আপনার কোড এবং UI-এর মধ্যে কন্টেন্টটি যথাযথভাবে পরিচালনা করার দায়িত্ব আপনার।
আগত বিষয়বস্তু পরিচালনা করুন
একটি Intent দ্বারা সরবরাহিত কন্টেন্ট পরিচালনা করার জন্য, Intent অবজেক্টটি পেতে getIntent() কল করুন। একবার আপনার কাছে অবজেক্টটি হয়ে গেলে, আপনি পরবর্তী কী করবেন তা নির্ধারণ করতে এর কন্টেন্টগুলি পরীক্ষা করতে পারেন। যদি এই কার্যকলাপটি সিস্টেমের অন্যান্য অংশ (যেমন লঞ্চার) থেকে শুরু করা যায়, তাহলে ইন্টেন্ট পরীক্ষা করার সময় এটি বিবেচনা করুন।
ইনকামিং ডেটা পরীক্ষা করার জন্য অতিরিক্ত সতর্কতা অবলম্বন করুন, আপনি কখনই জানেন না যে অন্য কোনও অ্যাপ্লিকেশন আপনাকে কী পাঠাতে পারে। উদাহরণস্বরূপ, ভুল MIME টাইপ সেট করা থাকতে পারে, অথবা পাঠানো ছবিটি অত্যন্ত বড় হতে পারে। এছাড়াও, প্রধান ("UI") থ্রেডের পরিবর্তে একটি পৃথক থ্রেডে বাইনারি ডেটা প্রক্রিয়া করতে ভুলবেন না।
কোটলিন
override fun onCreate(savedInstanceState: Bundle?) { ... when { intent?.action == Intent.ACTION_SEND -> { if ("text/plain" == intent.type) { handleSendText(intent) // Handle text being sent } else if (intent.type?.startsWith("image/") == true) { handleSendImage(intent) // Handle single image being sent } } intent?.action == Intent.ACTION_SEND_MULTIPLE && intent.type?.startsWith("image/") == true -> { handleSendMultipleImages(intent) // Handle multiple images being sent } else -> { // Handle other intents, such as being started from the home screen } } ... } private fun handleSendText(intent: Intent) { intent.getStringExtra(Intent.EXTRA_TEXT)?.let { // Update UI to reflect text being shared } } private fun handleSendImage(intent: Intent) { (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri)?.let { // Update UI to reflect image being shared } } private fun handleSendMultipleImages(intent: Intent) { intent.getParcelableArrayListExtra<Parcelable>(Intent.EXTRA_STREAM)?.let { // Update UI to reflect multiple images being shared } }
জাভা
void onCreate (Bundle savedInstanceState) { ... // Get intent, action and MIME type Intent intent = getIntent(); String action = intent.getAction(); String type = intent.getType(); if (Intent.ACTION_SEND.equals(action) && type != null) { if ("text/plain".equals(type)) { handleSendText(intent); // Handle text being sent } else if (type.startsWith("image/")) { handleSendImage(intent); // Handle single image being sent } } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) { if (type.startsWith("image/")) { handleSendMultipleImages(intent); // Handle multiple images being sent } } else { // Handle other intents, such as being started from the home screen } ... } void handleSendText(Intent intent) { String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); if (sharedText != null) { // Update UI to reflect text being shared } } void handleSendImage(Intent intent) { Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); if (imageUri != null) { // Update UI to reflect image being shared } } void handleSendMultipleImages(Intent intent) { ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); if (imageUris != null) { // Update UI to reflect multiple images being shared } }
ডেটা পাওয়ার পর UI আপডেট করা EditText পূরণ করার মতো সহজ হতে পারে, অথবা এটি একটি ছবিতে একটি আকর্ষণীয় ফটো ফিল্টার প্রয়োগ করার মতো আরও জটিল হতে পারে। পরবর্তীতে কী হবে তা আপনার অ্যাপের উপর নির্ভর করে।
ব্যবহারকারীরা আপনার অ্যাপটি চিনতে পারছেন কিনা তা নিশ্চিত করুন
আপনার অ্যাপটি Android Sharesheet এবং Intent Resolver-এ এর আইকন এবং লেবেল দ্বারা প্রতিনিধিত্ব করা হয়। এই দুটিই ম্যানিফেস্টে সংজ্ঞায়িত করা হয়েছে। আরও প্রসঙ্গ প্রদানের জন্য আপনি কার্যকলাপ বা Intent ফিল্টার লেবেল সেট করতে পারেন।
অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) অনুসারে, অ্যান্ড্রয়েড শেয়ারশিট শুধুমাত্র আপনার application ট্যাগের ম্যানিফেস্টে সেট করা আইকন ব্যবহার করে। অ্যান্ড্রয়েড intent-filter এবং activity ট্যাগে সেট করা আইকনগুলিকে উপেক্ষা করে।