
অন্যান্য অ্যাপের ব্যবহারকারীদের জন্য আপনার অ্যাপে ইউআরএল, ছবি বা অন্য ধরনের ডেটা শেয়ার করা আরও সহজ ও দ্রুত করতে ডিরেক্ট শেয়ার টার্গেট ব্যবহার করুন। ডিরেক্ট শেয়ার মেসেজিং এবং সোশ্যাল অ্যাপ থেকে কন্ট্যাক্টগুলো সরাসরি অ্যান্ড্রয়েড শেয়ারশিটে উপস্থাপন করে, যার ফলে ব্যবহারকারীদের অ্যাপটি নির্বাচন করে কন্ট্যাক্টটি খুঁজতে হয় না।
ShortcutManagerCompat হলো একটি AndroidX API যা শেয়ারিং শর্টকাট প্রদান করে এবং যা অপ্রচলিত ChooserTargetService API-এর সাথে ব্যাকওয়ার্ড কম্প্যাটিবল। শেয়ারিং শর্টকাট এবং ChooserTargets উভয়ই প্রকাশ করার জন্য এটিই সবচেয়ে পছন্দের উপায়। নির্দেশাবলীর জন্য, এই পৃষ্ঠায় "শেয়ারিং শর্টকাট এবং ChooserTarget উভয়ই প্রদান করতে AndroidX ব্যবহার করুন" দেখুন।
সরাসরি শেয়ার লক্ষ্যমাত্রা প্রকাশ করুন
Sharesheet Direct Share সারিটি শুধুমাত্র Sharing Shortcuts API দ্বারা প্রদত্ত ডাইনামিক শর্টকাটগুলো প্রদর্শন করে। Direct Share টার্গেটগুলো প্রকাশ করতে নিম্নলিখিত ধাপগুলো সম্পন্ন করুন।
আপনার অ্যাপের XML রিসোর্স ফাইলে
share-targetএলিমেন্টগুলো ডিক্লেয়ার করুন।<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>আপনার অ্যাপ চালু হওয়ার সময়, ডাইনামিক শর্টকাটগুলোকে গুরুত্ব অনুসারে সাজাতে
setDynamicShortcutsব্যবহার করুন।নিম্নতর সূচক অধিক গুরুত্ব নির্দেশ করে। আপনি যদি একটি যোগাযোগ অ্যাপ তৈরি করেন, তবে এগুলি আপনার অ্যাপে প্রদর্শিত হওয়ার ক্রমানুসারে শীর্ষ কথোপকথন হতে পারে। পুরনো বা অকার্যকর শর্টকাট প্রকাশ করবেন না; গত ৩০ দিনে কোনো ব্যবহারকারীর কার্যকলাপ না থাকা কথোপকথনকে পুরনো বা অকার্যকর বলে গণ্য করা হয়।
কোটলিন
ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))
জাভা
List<ShortcutInfoCompat> shortcuts = new ArrayList<>(); shortcuts.add(shortcut1); shortcuts.add(shortcut2); ... ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
আপনি যদি একটি কমিউনিকেশন অ্যাপ তৈরি করেন, তবে ব্যবহারকারী যখনই কোনো কন্ট্যাক্টকে মেসেজ পাঠাবেন বা গ্রহণ করবেন, তখনই
pushDynamicShortcutমাধ্যমে শর্টকাট ব্যবহারের রিপোর্টটি তাৎক্ষণিকভাবে তৈরি করুন। আরও তথ্যের জন্য এই পৃষ্ঠার ‘কমিউনিকেশন অ্যাপের জন্য শর্টকাট ব্যবহারের রিপোর্ট’ অংশটি দেখুন। উদাহরণস্বরূপ, ব্যবহারকারীর পাঠানো মেসেজের ব্যবহারের রিপোর্ট তৈরি করতে,ShortcutInfoCompat.Builder#addCapabilityBindingএর মাধ্যমে শর্টকাটেactions.intent.SEND_MESSAGEক্যাপাবিলিটি ব্যবহার করে ক্যাপাবিলিটি বাইন্ডিং নির্দিষ্ট করুন।কোটলিন
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
জাভা
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
যদি ব্যবহারকারী কোনো কন্ট্যাক্ট ডিলিট করেন, তাহলে
removeLongLivedShortcutব্যবহার করুন। সিস্টেম সার্ভিস দ্বারা ক্যাশ করা থাকুক বা না থাকুক, শর্টকাটটি মুছে ফেলার জন্য এটিই সবচেয়ে ভালো উপায়। নিচের কোড স্নিপেটটিতে এটি কীভাবে করতে হয় তার একটি উদাহরণ দেখানো হয়েছে।কোটলিন
val deleteShortcutId = "..." ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))
জাভা
String deleteShortcutId = "..."; ShortcutManagerCompat.removeLongLivedShortcuts( myContext, Arrays.asList(deleteShortcutId));
আপনার ডিরেক্ট শেয়ার টার্গেটগুলোর র্যাঙ্কিং উন্নত করুন
অ্যান্ড্রয়েড শেয়ারশিট একটি নির্দিষ্ট সংখ্যক ডিরেক্ট শেয়ার টার্গেট দেখায়। এই সাজেশনগুলো র্যাঙ্ক অনুসারে সাজানো থাকে। নিম্নলিখিত কাজগুলো করার মাধ্যমে আপনি আপনার শর্টকাটগুলোর র্যাঙ্কিং উন্নত করতে পারেন:
- নিশ্চিত করুন যেন সমস্ত
shortcutIdsঅনন্য হয় এবং বিভিন্ন লক্ষ্যের জন্য পুনরায় ব্যবহার না করা হয়। -
setLongLived(true)কল করে শর্টকাটটি দীর্ঘস্থায়ী করুন। - কথোপকথন-সম্পর্কিত শর্টকাটগুলির জন্য,
ShortcutManagerCompat.pushDynamicShortcutএর মাধ্যমে সংশ্লিষ্ট শর্টকাটগুলি পুনরায় প্রকাশ করে বহির্গামী এবং আগত বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন তৈরি করুন। বিস্তারিত জানার জন্য এই পৃষ্ঠায় ‘যোগাযোগ অ্যাপগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন’ দেখুন। - অপ্রাসঙ্গিক বা পুরনো ডিরেক্ট শেয়ার টার্গেট দেওয়া থেকে বিরত থাকুন—উদাহরণস্বরূপ, এমন কন্ট্যাক্ট যাদেরকে ব্যবহারকারী গত ৩০ দিনের মধ্যে মেসেজ করেননি।
- এসএমএস অ্যাপের ক্ষেত্রে, শর্টকোড বা সম্ভাব্য স্প্যাম হিসেবে চিহ্নিত কথোপকথনের শর্টকাট দেওয়া থেকে বিরত থাকুন। ব্যবহারকারীরা সেইসব কথোপকথনে কিছু শেয়ার করার সম্ভাবনা খুবই কম।
- শর্টকাটটিকে উপযুক্ত
mimeTypeঅ্যাট্রিবিউটের সাথে যুক্ত করতেsetCategories()কল করুন। উদাহরণস্বরূপ, একটি SMS অ্যাপের ক্ষেত্রে, যদি কন্ট্যাক্টটি RCS- বা MMS-সক্ষম না হয়, তাহলে আপনি সংশ্লিষ্ট শর্টকাটটিকেimage/*এবংvideo/*এর মতো নন-টেক্সট MIME টাইপের সাথে যুক্ত করবেন না। - কোনো নির্দিষ্ট কথোপকথনের জন্য, একবার একটি ডাইনামিক শর্টকাট পুশ করা হলে এবং তার ব্যবহারের রিপোর্ট তৈরি হলে, শর্টকাট আইডিটি পরিবর্তন করবেন না। এটি র্যাঙ্কিংয়ের জন্য ব্যবহারের ডেটা সংরক্ষণ নিশ্চিত করে।
যদি ব্যবহারকারী কোনো ডাইরেক্ট শেয়ার টার্গেটে ট্যাপ করেন, তাহলে আপনার অ্যাপকে অবশ্যই তাকে এমন একটি UI-তে নিয়ে যেতে হবে যেখানে তিনি সরাসরি টার্গেটের বিষয়বস্তুর উপর কোনো অ্যাকশন সম্পাদন করতে পারবেন। ব্যবহারকারীকে কোনো বিভ্রান্তিমূলক UI দেখাবেন না, এবং ট্যাপ করা টার্গেটের সাথে সম্পর্কহীন কোনো UI-তে তাকে রাখবেন না। উদাহরণস্বরূপ, একটি মেসেজিং অ্যাপে, কোনো ডাইরেক্ট শেয়ার টার্গেটে ট্যাপ করলে ব্যবহারকারীকে তার নির্বাচিত ব্যক্তির সাথে কথোপকথনের ভিউতে নিয়ে যাওয়া হয়। কিবোর্ডটি দেখা যায় এবং মেসেজটি শেয়ার করা ডেটা দিয়ে আগে থেকেই পূরণ করা থাকে।
শর্টকাট এপিআই শেয়ার করা
অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) থেকে, ShortcutInfo.Builder এমন কিছু মেথড ও উন্নত বৈশিষ্ট্য যোগ করা হয়েছে যা শেয়ার করার লক্ষ্যবস্তু সম্পর্কে অতিরিক্ত তথ্য প্রদান করে:
-
setCategories() - অ্যান্ড্রয়েড ১০ থেকে, শেয়ার ইন্টেন্ট বা অ্যাকশন পরিচালনা করতে পারে এমন শর্টকাটগুলো ফিল্টার করার জন্যও ক্যাটাগরি ব্যবহার করা হয়। বিস্তারিত জানতে ‘Declare a share target’ দেখুন। যে শর্টকাটগুলো শেয়ার টার্গেট হিসেবে ব্যবহার করার জন্য তৈরি, সেগুলোর ক্ষেত্রে এই ফিল্ডটি আবশ্যক।
-
setLongLived() অ্যাপ দ্বারা কোনো শর্টকাট অপ্রকাশিত বা অদৃশ্য করে দেওয়া হলেও (ডাইনামিক বা পিন করা শর্টকাট হিসেবে) সেটি বৈধ থাকবে কি না, তা নির্দিষ্ট করে। যদি কোনো শর্টকাট দীর্ঘস্থায়ী হয়, তবে ডাইনামিক শর্টকাট হিসেবে অপ্রকাশিত হয়ে যাওয়ার পরেও বিভিন্ন সিস্টেম পরিষেবা দ্বারা তা ক্যাশ করা থাকতে পারে।
একটি শর্টকাটকে দীর্ঘস্থায়ী করলে তার র্যাঙ্কিং উন্নত হতে পারে। বিস্তারিত জানতে ‘সেরা র্যাঙ্কিং অর্জন করুন’ দেখুন।
-
setShortLabel(),setLongLabel() কোনো নির্দিষ্ট ব্যক্তির জন্য শর্টকাট প্রকাশ করার সময়,
setLongLabel()এ তার পুরো নাম এবংsetShortLabel()এ কোনো সংক্ষিপ্ত নাম, যেমন ডাকনাম বা প্রথম নাম, অন্তর্ভুক্ত করুন।
গিটহাবে শেয়ারিং শর্টকাট প্রকাশ করার একটি উদাহরণ দেখুন।
শর্টকাট চিত্র সরবরাহ করুন
একটি শেয়ারিং শর্টকাট তৈরি করতে, আপনাকে setIcon() এর মাধ্যমে একটি ছবি যোগ করতে হবে।
শেয়ারিং শর্টকাটগুলো সিস্টেমের বিভিন্ন সারফেসে প্রদর্শিত হতে পারে এবং সেগুলোর আকৃতি পরিবর্তিত হতে পারে। এছাড়াও, অ্যান্ড্রয়েড ভার্সন ৭, ৮, বা ৯ (API লেভেল ২৫, ২৬, ২৭, এবং ২৮) চালিত কিছু ডিভাইসে ব্যাকগ্রাউন্ড ছাড়া শুধুমাত্র বিটম্যাপ আইকন দেখা যেতে পারে, যা কনট্রাস্ট ব্যাপকভাবে কমিয়ে দেয়। আপনার শর্টকাটটি যেন প্রত্যাশিত রূপে দেখায়, তা নিশ্চিত করতে IconCompat.createWithAdaptiveBitmap() ব্যবহার করে একটি অ্যাডাপ্টিভ বিটম্যাপ প্রদান করুন।
নিশ্চিত করুন যে অ্যাডাপ্টিভ বিটম্যাপগুলো অ্যাডাপ্টিভ আইকনের জন্য নির্ধারিত নির্দেশিকা এবং মাত্রা অনুসরণ করে । এটি করার সবচেয়ে সাধারণ উপায় হলো উদ্দিষ্ট বর্গাকার বিটম্যাপটিকে ৭২x৭২ ডিপি-তে স্কেল করে একটি ১০৮x১০৮ ডিপি স্বচ্ছ ক্যানভাসের কেন্দ্রে স্থাপন করা। যদি আপনার আইকনে স্বচ্ছ অংশ থাকে, তবে আপনাকে একটি ব্যাকগ্রাউন্ড রঙ যোগ করতে হবে; অন্যথায়, স্বচ্ছ অংশগুলো কালো দেখাবে।
কোনো নির্দিষ্ট আকৃতিতে মাস্ক করা ছবি প্রদান করবেন না। উদাহরণস্বরূপ, অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯)-এর আগে, ডিরেক্ট শেয়ার ChooserTarget -এর জন্য ব্যবহারকারীর অ্যাভাটার হিসেবে বৃত্তের আকৃতি দেওয়া হতো। অ্যান্ড্রয়েড ১০-এর অ্যান্ড্রয়েড শেয়ারশিট এবং অন্যান্য সিস্টেম সারফেস এখন শর্টকাটের ছবিকে আকৃতি ও থিম দেয়। শেয়ারিং শর্টকাট দেওয়ার জন্য পছন্দের পদ্ধতি হলো ShortcutManagerCompat মাধ্যমে দেওয়া, যা আপনার জন্য স্বয়ংক্রিয়ভাবে ব্যাককমপ্যাট ডিরেক্ট শেয়ার ChooserTarget অবজেক্টগুলোকে বৃত্তাকারে আকৃতি দেয়।
শেয়ার লক্ষ্যমাত্রা ঘোষণা করুন
স্ট্যাটিক শর্টকাট ডেফিনিশনের মতোই, শেয়ার টার্গেটগুলো অ্যাপের রিসোর্স ফাইলে ডিক্লেয়ার করতে হবে। রিসোর্স ফাইলের <shortcuts> রুট এলিমেন্টের ভেতরে, অন্যান্য স্ট্যাটিক শর্টকাট ডেফিনিশনের সাথে শেয়ার টার্গেট ডেফিনিশনগুলো যোগ করুন। প্রতিটি <share-targets> এলিমেন্টে শেয়ার করা ডেটা টাইপ, ম্যাচিং ক্যাটাগরি এবং যে টার্গেট ক্লাসটি শেয়ার ইনটেন্ট পরিচালনা করবে, সে সম্পর্কিত তথ্য থাকে। XML কোডটি দেখতে অনেকটা এইরকম:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <share-target android:targetClass="com.example.android.sharingshortcuts.SendMessageActivity"> <data android:mimeType="text/plain" /> <category android:name="com.example.android.sharingshortcuts.category.TEXT_SHARE_TARGET" /> </share-target> </shortcuts>
একটি শেয়ার টার্গেটের ডেটা এলিমেন্টটি একটি ইনটেন্ট ফিল্টারের ডেটা স্পেসিফিকেশনের অনুরূপ। প্রতিটি শেয়ার টার্গেটের একাধিক ক্যাটাগরি থাকতে পারে, যা শুধুমাত্র একটি অ্যাপের প্রকাশিত শর্টকাটগুলোকে তার শেয়ার টার্গেট ডেফিনিশনের সাথে মেলানোর জন্য ব্যবহৃত হয়। ক্যাটাগরিগুলোতে অ্যাপ-নির্ধারিত যেকোনো যথেচ্ছ ভ্যালু থাকতে পারে।
যদি ব্যবহারকারী অ্যান্ড্রয়েড শেয়ারশিটে উপরের উদাহরণ টার্গেট-শেয়ারের সাথে মেলে এমন শেয়ারিং শর্টকাট নির্বাচন করেন, তাহলে অ্যাপটি নিম্নলিখিত শেয়ার ইন্টেন্টটি পাবে:
Action: Intent.ACTION_SEND ComponentName: {com.example.android.sharingshortcuts / com.example.android.sharingshortcuts.SendMessageActivity} Data: Uri to the shared content EXTRA_SHORTCUT_ID: <ID of the selected shortcut>
যদি ব্যবহারকারী লঞ্চার শর্টকাট থেকে শেয়ার টার্গেটটি খোলে, তাহলে অ্যাপটি সেই ইন্টেন্টটি পাবে যা ShortcutManagerCompat- এ শেয়ারিং শর্টকাটটি যোগ করার সময় তৈরি হয়েছিল। যেহেতু এটি একটি ভিন্ন ইন্টেন্ট, তাই Intent.EXTRA_SHORTCUT_ID উপলব্ধ থাকবে না, এবং আপনার প্রয়োজন হলে আইডিটি ম্যানুয়ালি পাস করতে হবে।
যোগাযোগ অ্যাপগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন
আপনি যদি একটি কমিউনিকেশন অ্যাপ তৈরি করেন, তাহলে পাঠানো এবং আসা উভয় মেসেজের ব্যবহারের তথ্য রিপোর্ট করার মাধ্যমে অ্যান্ড্রয়েড শেয়ারশিটে আপনার র্যাঙ্কিং উন্নত করতে পারেন। এটি করার জন্য, ShortcutManagerCompat.pushDynamicShortcut ব্যবহার করে কন্ট্যাক্টটির প্রতিনিধিত্বকারী কনভারসেশন শর্টকাটটি পুনরায় পাবলিশ করুন।
শর্টকাট ব্যবহার এবং ক্যাপাবিলিটি বাইন্ডিং অ্যান্ড্রয়েড ৫.০ (এপিআই ২১) পর্যন্ত ব্যাকওয়ার্ড কম্প্যাটিবল।
বহির্গামী বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন
ব্যবহারকারীর পাঠানো বার্তার ব্যবহার প্রতিবেদন তৈরি করার প্রক্রিয়াটি, একটি বার্তা তৈরি করার পর 'প্রেরণ' বোতামে ক্লিক করার মতোই।
ব্যবহারের প্রতিবেদন চালু করতে, ShortcutInfoCompat.Builder#addCapabilityBinding এর মাধ্যমে শর্টকাটে actions.intent.SEND_MESSAGE ক্যাপাবিলিটি সহ ক্যাপাবিলিটি বাইন্ডিং নির্দিষ্ট করুন।
কোটলিন
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
জাভা
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
প্রেরিত বার্তাটি যদি কোনো গ্রুপ চ্যাটের জন্য হয়, তাহলে আপনাকে অবশ্যই Audience প্যারামিটারের মানটিও যোগ করতে হবে, কারণ recipient ধরনটি এই সক্ষমতার সাথে যুক্ত থাকে।
কোটলিন
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
জাভা
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.SEND_MESSAGE", "message.recipient.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
আগত বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন করুন
ব্যবহারকারী যখন এসএমএস, চ্যাট বার্তা, ইমেল বা নোটিফিকেশনের মতো কোনো বার্তা পান, তখন ব্যবহারের প্রতিবেদন চালু করতে হলে, আপনাকে অবশ্যই ShortcutInfoCompat.Builder#addCapabilityBinding এর মাধ্যমে শর্টকাটে actions.intent.RECEIVE_MESSAGE ক্যাপাবিলিটিসহ অতিরিক্তভাবে ক্যাপাবিলিটি বাইন্ডিং নির্দিষ্ট করতে হবে।
কোটলিন
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE").build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
জাভা
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(firstName) .setLongLabel(fullName) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE") .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
আগত বার্তাটি যদি কোনো গ্রুপ চ্যাট থেকে আসে, তাহলে আপনাকে অবশ্যই Audience প্যারামিটারের মানটিও যোগ করতে হবে, কারণ sender ধরনটি এই সক্ষমতার সাথে যুক্ত থাকে।
কোটলিন
val shortcutInfo = ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", listOf("Audience")).build() ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo)
জাভা
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(myContext, staticConversationIdentifier) ... .setShortLabel(groupShortTitle) .setLongLabel(groupLongTitle) .setCategories(matchedCategories) .setLongLived(true) .addCapabilityBinding("actions.intent.RECEIVE_MESSAGE", "message.sender.@type", Arrays.asList("Audience")) .build(); ShortcutManagerCompat.pushDynamicShortcut(myContext, shortcutInfo);
শেয়ারিং শর্টকাট এবং চুজারটার্গেট উভয়ই প্রদান করতে AndroidX ব্যবহার করুন।
AndroidX কম্প্যাটিবিলিটি লাইব্রেরির সাথে কাজ করতে হলে, অ্যাপের ম্যানিফেস্টে অবশ্যই `chooser-target-service` এবং `intent-filters` মেটা-ডেটা সেট থাকতে হবে। বর্তমান ChooserTargetService ডিরেক্ট শেয়ার এপিআই দেখুন।
এই সার্ভিসটি কম্প্যাটিবিলিটি লাইব্রেরিতে আগে থেকেই ডিক্লেয়ার করা আছে, তাই ব্যবহারকারীকে অ্যাপের ম্যানিফেস্টে সার্ভিসটি ডিক্লেয়ার করার প্রয়োজন নেই। তবে, শেয়ার অ্যাক্টিভিটি থেকে সার্ভিসটির লিঙ্কটিকে একটি চুজার টার্গেট প্রোভাইডার হিসেবে অবশ্যই বিবেচনা করতে হবে।
নিম্নলিখিত উদাহরণে, ChooserTargetService এর ইমপ্লিমেন্টেশন হলো androidx.core.content.pm.ChooserTargetServiceCompat , যা AndroidX-এ আগে থেকেই সংজ্ঞায়িত করা আছে:
<activity android:name=".SendMessageActivity" android:label="@string/app_name" android:theme="@style/SharingShortcutsDialogTheme"> <!-- This activity can respond to Intents of type SEND --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <!-- Only needed if you import the sharetarget AndroidX library that provides backwards compatibility with the old DirectShare API. The activity that receives the Sharing Shortcut intent needs to be taken into account with this chooser target provider. --> <meta-data android:name="android.service.chooser.chooser_target_service" android:value="androidx.sharetarget.ChooserTargetServiceCompat" /> </activity>
শর্টকাট শেয়ার করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
শর্টকাট ব্যবহারের ডেটা কীভাবে সংরক্ষিত হয় এবং সেগুলো কি ডিভাইস থেকে মুছে যায়?
শর্টকাটগুলো ডিভাইসের ভেতরেই সিস্টেম ডেটা ডিরেক্টরির একটি এনক্রিপ্টেড ডিস্ক পার্টিশনে সম্পূর্ণরূপে সংরক্ষিত থাকে। শর্টকাটের আইকন, ইনটেন্ট এবং ব্যক্তি ও রিসোর্সের নামের মতো তথ্য শুধুমাত্র সিস্টেম সার্ভিস এবং যে অ্যাপটি শর্টকাটগুলো তৈরি করেছে, সেই অ্যাপটিই অ্যাক্সেস করতে পারে।
ডিরেক্ট শেয়ারের ইতিহাস কী?
অ্যাপগুলোকে ChooserTargetService এর মাধ্যমে ChooserTarget অবজেক্ট সরবরাহ করার সুযোগ দিতে আমরা অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩)-এ ডিরেক্ট শেয়ার চালু করেছিলাম। ফলাফলগুলো চাহিদা অনুযায়ী প্রতিক্রিয়াশীলভাবে আনা হতো, যার ফলে টার্গেটগুলো লোড হতে বেশি সময় লাগত।
অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯)-এ, আমরা ChooserTargetService ডিরেক্ট শেয়ার এপিআই-গুলোকে নতুন Sharing Shortcuts এপিআই দিয়ে প্রতিস্থাপন করেছি। চাহিদা অনুযায়ী প্রতিক্রিয়াশীলভাবে ফলাফল পুনরুদ্ধার করার পরিবর্তে, Sharing Shortcuts এপিআই অ্যাপগুলোকে আগে থেকেই ডিরেক্ট শেয়ার টার্গেট প্রকাশ করার সুযোগ দিত। এটি ShareSheet প্রস্তুত করার সময় ডিরেক্ট শেয়ার টার্গেট পুনরুদ্ধারের প্রক্রিয়াকে দ্রুততর করত। ChooserTargetService ডিরেক্ট শেয়ার প্রক্রিয়াটি কাজ করতে থাকবে, কিন্তু সিস্টেম এই পদ্ধতিতে সরবরাহ করা টার্গেটগুলোকে Sharing Shortcuts এপিআই ব্যবহার করা যেকোনো টার্গেটের চেয়ে নিম্ন র্যাঙ্কে স্থান দেবে।
অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০)-এ ChooserTargetService সার্ভিসটিকে অপ্রচলিত ঘোষণা করা হয়েছে, এবং ডিরেক্ট শেয়ার টার্গেট সরবরাহ করার একমাত্র উপায় হলো শেয়ারিং শর্টকাটস এপিআই।
শেয়ার টার্গেটের জন্য প্রকাশিত শর্টকাটগুলো লঞ্চার শর্টকাট (লঞ্চারে অ্যাপ আইকনে লং প্রেস করার সময় শর্টকাটের সাধারণ ব্যবহার) থেকে কীভাবে আলাদা?
'শেয়ার টার্গেট' উদ্দেশ্যে প্রকাশিত যেকোনো শর্টকাট একটি লঞ্চার শর্টকাট হিসেবেও গণ্য হয় এবং আপনার অ্যাপের আইকনে লং প্রেস করলে তা মেনুতে দেখানো হবে। প্রতি অ্যাক্টিভিটিতে শর্টকাটের সর্বোচ্চ সংখ্যার সীমাটি একটি অ্যাপের প্রকাশিত মোট শর্টকাটের (শেয়ার টার্গেট এবং লেগ্যাসি লঞ্চার শর্টকাট মিলিয়ে) ক্ষেত্রেও প্রযোজ্য।
কতগুলো শেয়ারিং শর্টকাট প্রকাশ করা উচিত, সে বিষয়ে নির্দেশনা কী?
getMaxShortcutCountPerActivity(android.content.Context) এর মাধ্যমে উপলব্ধ ডাইনামিক শর্টকাটের মতোই শেয়ারিং শর্টকাটের সংখ্যাও সীমিত। এই সীমা পর্যন্ত যেকোনো সংখ্যক শর্টকাট প্রকাশ করা যেতে পারে, তবে মনে রাখতে হবে যে শেয়ারিং শর্টকাটগুলো অ্যাপ লঞ্চারে লং-প্রেস করলে এবং শেয়ার শিটে দেখা যেতে পারে। বেশিরভাগ অ্যাপ লঞ্চারে লং-প্রেস করলে পোর্ট্রেট মোডে সর্বোচ্চ চার বা পাঁচটি এবং ল্যান্ডস্কেপ মোডে আটটি শর্টকাট দেখা যায়। শেয়ারিং শর্টকাট সম্পর্কে আরও বিস্তারিত তথ্য ও নির্দেশনার জন্য এই FAQ দেখুন।