সরাসরি শেয়ার টার্গেট প্রদান

চিত্র 1: শেয়ারশীটে সরাসরি শেয়ার সারি, 1 দ্বারা দেখানো হয়েছে

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

ShortcutManagerCompat হল একটি AndroidX API যেটি শেয়ারিং শর্টকাট প্রদান করে এবং এটি অবহেলিত ChooserTargetService API-এর সাথে ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ। শেয়ারিং শর্টকাট এবং ChooserTargets উভয়ই প্রকাশ করার এটি পছন্দের উপায়। নির্দেশাবলীর জন্য, এই পৃষ্ঠায় শেয়ারিং শর্টকাট এবং চয়নকারী লক্ষ্য উভয়ই প্রদান করতে AndroidX ব্যবহার করুন দেখুন।

সরাসরি শেয়ার লক্ষ্য প্রকাশ করুন

শেয়ারশীট ডাইরেক্ট শেয়ার সারি শুধুমাত্র শেয়ারিং শর্টকাট API দ্বারা প্রদত্ত গতিশীল শর্টকাটগুলি দেখায়৷ সরাসরি শেয়ার লক্ষ্য প্রকাশ করতে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন৷

  1. আপনার অ্যাপের 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>
    
  2. যখন আপনার অ্যাপ আরম্ভ হয়, তখন গুরুত্ব অনুসারে গতিশীল শর্টকাট অর্ডার করতে setDynamicShortcuts ব্যবহার করুন।

    একটি নিম্ন সূচক আরও গুরুত্ব নির্দেশ করে। আপনি যদি একটি কমিউনিকেশন অ্যাপ তৈরি করে থাকেন, তাহলে সেগুলি আপনার অ্যাপে প্রদর্শিত হওয়ার সাথে সাথে রিসেন্সি অনুসারে সাজানো শীর্ষ কথোপকথন হতে পারে। বাসি শর্টকাট প্রকাশ করবেন না; গত 30 দিনে ব্যবহারকারীর কোনো কার্যকলাপ ছাড়া একটি কথোপকথন পুরানো বলে বিবেচিত হয়৷

    কোটলিন

    ShortcutManagerCompat.setDynamicShortcuts(myContext, listOf(shortcut1, shortcut2, ..))
    

    জাভা

    List<ShortcutInfoCompat> shortcuts = new ArrayList<>();
    shortcuts.add(shortcut1);
    shortcuts.add(shortcut2);
    ...
    ShortcutManagerCompat.setDynamicShortcuts(myContext, shortcuts);
    
    
  3. আপনি যদি একটি যোগাযোগ অ্যাপ তৈরি করেন, ব্যবহারকারী যখনই কোনো পরিচিতিতে কোনো বার্তা পান বা পাঠান তখনই 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);
    
  4. ব্যবহারকারী একটি পরিচিতি মুছে ফেললে, removeLongLivedShortcut ব্যবহার করুন। এটি সিস্টেম পরিষেবাগুলির দ্বারা ক্যাশে করা হোক না কেন শর্টকাটটি সরানোর জন্য এটি পছন্দের উপায়৷ নিম্নলিখিত কোড স্নিপেট এটি কিভাবে করতে একটি উদাহরণ দেখায়.

    কোটলিন

    val deleteShortcutId = "..."
    ShortcutManagerCompat.removeLongLivedShortcuts(myContext, listOf(deleteShortcutId))
    

    জাভা

    String deleteShortcutId = "...";
    ShortcutManagerCompat.removeLongLivedShortcuts(
        myContext, Arrays.asList(deleteShortcutId));
    
    

আপনার সরাসরি শেয়ারের লক্ষ্যগুলির র‌্যাঙ্কিং উন্নত করুন

অ্যান্ড্রয়েড শেয়ারশিট একটি নির্দিষ্ট সংখ্যক সরাসরি শেয়ার লক্ষ্য দেখায়। এই পরামর্শগুলি র‌্যাঙ্ক অনুসারে সাজানো হয়েছে। আপনি নিম্নলিখিতগুলি করে আপনার শর্টকাটগুলির র‌্যাঙ্কিংকে সম্ভাব্যভাবে উন্নত করতে পারেন:

  • নিশ্চিত করুন যে সমস্ত shortcutIds অনন্য এবং ভিন্ন লক্ষ্যগুলির জন্য কখনও পুনঃব্যবহৃত হয় না।
  • setLongLived(true) কল করে শর্টকাটটি দীর্ঘস্থায়ী তা নিশ্চিত করুন।
  • কথোপকথন-সম্পর্কিত শর্টকাটগুলির জন্য, ShortcutManagerCompat.pushDynamicShortcut এর মাধ্যমে সংশ্লিষ্ট শর্টকাটগুলি পুনঃপ্রকাশ করে বহির্গামী এবং আগত বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন করুন। বিস্তারিত জানার জন্য এই পৃষ্ঠায় যোগাযোগ অ্যাপের জন্য প্রতিবেদন শর্টকাট ব্যবহার দেখুন।
  • অপ্রাসঙ্গিক বা বাসি সরাসরি শেয়ার টার্গেট প্রদান করা এড়িয়ে চলুন-উদাহরণস্বরূপ, ব্যবহারকারী গত 30 দিনের মধ্যে মেসেজ করেনি এমন পরিচিতিগুলি।
  • এসএমএস অ্যাপগুলির জন্য, সম্ভাব্য স্প্যাম হিসাবে চিহ্নিত শর্ট কোড বা কথোপকথনের জন্য শর্টকাট প্রদান করা এড়িয়ে চলুন। ব্যবহারকারীদের সেই কথোপকথনগুলি ভাগ করার সম্ভাবনা খুব কম।
  • উপযুক্ত mimeType বৈশিষ্ট্যের সাথে শর্টকাট যুক্ত করতে setCategories() এ কল করুন। উদাহরণস্বরূপ, একটি এসএমএস অ্যাপের জন্য, যদি পরিচিতিটি RCS- বা MMS-সক্ষম না হয়, তাহলে আপনি সংশ্লিষ্ট শর্টকাটটিকে নন-টেক্সট MIME ধরনের যেমন image/* এবং video/* এর সাথে যুক্ত করবেন না।
  • একটি প্রদত্ত কথোপকথনের জন্য, একবার একটি গতিশীল শর্টকাট পুশ করা হলে এবং ব্যবহারের রিপোর্ট করা হলে, শর্টকাট আইডি পরিবর্তন করবেন না৷ এটি র‍্যাঙ্কিংয়ের জন্য ব্যবহারের ডেটা ধরে রাখা নিশ্চিত করে।

ব্যবহারকারী যদি কোনো ডাইরেক্ট শেয়ার টার্গেট ট্যাপ করে, তাহলে আপনার অ্যাপটিকে অবশ্যই একটি UI-তে নিয়ে যেতে হবে যেখানে তারা টার্গেটের বিষয়ে সরাসরি একটি অ্যাকশন করতে পারে। ব্যবহারকারীকে একটি দ্ব্যর্থতা নিরসন UI উপস্থাপন করবেন না এবং ট্যাপ করা লক্ষ্যের সাথে সম্পর্কহীন একটি UI-তে তাদের রাখবেন না। উদাহরণস্বরূপ, একটি মেসেজিং অ্যাপে, একটি সরাসরি শেয়ার টার্গেট ট্যাপ করা ব্যবহারকারীকে তাদের নির্বাচিত ব্যক্তির সাথে একটি কথোপকথন দৃশ্যে নিয়ে যায়। কীবোর্ডটি দৃশ্যমান এবং বার্তাটি ভাগ করা ডেটা দিয়ে আগে থেকে পূরণ করা হয়।

শেয়ারিং শর্টকাট API

Android 10 (API স্তর 29) থেকে শুরু করে, ShortcutInfo.Builder যোগ করা পদ্ধতি এবং বর্ধিতকরণ যা শেয়ার লক্ষ্য সম্পর্কে অতিরিক্ত তথ্য প্রদান করে:

setCategories()
অ্যান্ড্রয়েড 10 দিয়ে শুরু করে, শর্টকাটগুলিকে ফিল্টার করতে বিভাগগুলিও ব্যবহার করা হয় যা শেয়ার করার উদ্দেশ্য বা ক্রিয়াগুলি পরিচালনা করতে পারে। বিস্তারিত জানার জন্য একটি শেয়ার লক্ষ্য ঘোষণা দেখুন। শেয়ার টার্গেট হিসেবে ব্যবহার করা শর্টকাটগুলির জন্য এই ক্ষেত্রটি প্রয়োজন৷
setLongLived()

একটি শর্টকাট বৈধ কিনা তা নির্দিষ্ট করে যখন এটি অ্যাপ দ্বারা অপ্রকাশিত বা অদৃশ্য করা হয়েছে (একটি গতিশীল বা পিন করা শর্টকাট হিসাবে)৷ একটি শর্টকাট দীর্ঘজীবী হলে, এটি একটি গতিশীল শর্টকাট হিসাবে অপ্রকাশিত হওয়ার পরেও বিভিন্ন সিস্টেম পরিষেবা দ্বারা ক্যাশে করা যেতে পারে।

একটি শর্টকাট দীর্ঘজীবী করা এর র‌্যাঙ্কিং উন্নত করতে পারে। বিস্তারিত জানার জন্য সেরা র‌্যাঙ্কিং পান দেখুন।

setShortLabel() , setLongLabel()

একটি পৃথক ব্যক্তির জন্য একটি শর্টকাট প্রকাশ করার সময় অনুগ্রহ করে setLongLabel() এ তাদের পুরো নাম এবং যেকোনো ছোট নাম, যেমন একটি ডাকনাম বা প্রথম নাম, setShortLabel() এ অন্তর্ভুক্ত করুন।

GitHub-এ শেয়ারিং শর্টকাট প্রকাশের একটি উদাহরণ দেখুন।

শর্টকাট চিত্র প্রদান করুন

একটি শেয়ারিং শর্টকাট তৈরি করতে, আপনাকে setIcon() এর মাধ্যমে একটি ছবি যোগ করতে হবে।

শেয়ারিং শর্টকাটগুলি সিস্টেম সারফেস জুড়ে প্রদর্শিত হতে পারে এবং পুনরায় আকার দেওয়া হতে পারে। অতিরিক্তভাবে, Android সংস্করণ 7, 8, বা 9 (API স্তর 25, 26, 27 এবং 28) চালিত কিছু ডিভাইস ব্যাকগ্রাউন্ড ছাড়াই শুধুমাত্র বিটম্যাপ আইকন প্রদর্শন করতে পারে, যা নাটকীয়ভাবে বৈসাদৃশ্য হ্রাস করে। আপনার শর্টকাটটি লক্ষ্য হিসাবে দেখায় তা নিশ্চিত করতে, IconCompat.createWithAdaptiveBitmap() ব্যবহার করে একটি অভিযোজিত বিটম্যাপ প্রদান করুন।

নিশ্চিত করুন যে অভিযোজিত বিটম্যাপগুলি অভিযোজিত আইকনগুলির জন্য সেট করা একই নির্দেশিকা এবং মাত্রাগুলি অনুসরণ করে৷ এটি সম্পন্ন করার সবচেয়ে সাধারণ উপায় হল উদ্দিষ্ট বর্গাকার বিটম্যাপটিকে 72x72 dp এবং কেন্দ্রে স্কেল করা যা একটি 108x108 dp স্বচ্ছ ক্যানভাসের মধ্যে। যদি আপনার আইকনে স্বচ্ছ অঞ্চল থাকে, তাহলে আপনাকে একটি পটভূমির রঙ অন্তর্ভুক্ত করতে হবে; অন্যথায়, স্বচ্ছ অঞ্চলগুলি কালো দেখায়।

একটি নির্দিষ্ট আকারে মুখোশযুক্ত চিত্র প্রদান করবেন না। উদাহরণস্বরূপ, অ্যান্ড্রয়েড 10 (API স্তর 29) এর আগে, সরাসরি শেয়ার ChooserTarget জন্য ব্যবহারকারী অবতারগুলি সরবরাহ করা সাধারণ ছিল যা একটি বৃত্তে মুখোশযুক্ত ছিল। Android 10-এ অ্যান্ড্রয়েড শেয়ারশিট এবং অন্যান্য সিস্টেমের পৃষ্ঠ এখন আকৃতি এবং থিম শর্টকাট চিত্র। 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>

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

যদি ব্যবহারকারী Android শেয়ারশীটে শেয়ারিং শর্টকাট নির্বাচন করেন যা উপরের টার্গেট-শেয়ারের উদাহরণের সাথে মেলে, অ্যাপটি নিম্নলিখিত শেয়ার করার অভিপ্রায় পাবে:

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>

ব্যবহারকারী লঞ্চার শর্টকাট থেকে শেয়ার টার্গেট খোলে, শর্টকাট ম্যানেজার কম্প্যাটে শেয়ারিং শর্টকাট যোগ করার সময় অ্যাপটি তৈরি করা অভিপ্রায়টি পাবে। যেহেতু এটি একটি ভিন্ন অভিপ্রায়, তাই Intent.EXTRA_SHORTCUT_ID উপলব্ধ হবে না এবং আপনার প্রয়োজন হলে আপনাকে ম্যানুয়ালি আইডিটি পাস করতে হবে৷

যোগাযোগ অ্যাপের জন্য শর্টকাট ব্যবহারের প্রতিবেদন করুন

আপনি যদি একটি কমিউনিকেশন অ্যাপ ডেভেলপ করে থাকেন, তাহলে আপনি আউটগোয়িং এবং ইনকামিং বার্তা উভয়ের জন্য ব্যবহার প্রতিবেদন করে অ্যান্ড্রয়েড শেয়ারশীটে আপনার র‌্যাঙ্কিং উন্নত করতে পারেন। এটি করার জন্য, কথোপকথনের শর্টকাটটি পুনঃপ্রকাশ করুন যা ShortcutManagerCompat.pushDynamicShortcut এর মাধ্যমে পরিচিতির প্রতিনিধিত্ব করে।

শর্টকাট ব্যবহার এবং ক্ষমতা বাইন্ডিংগুলি Android 5.0 (API 21) এর সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ।

বহির্গামী বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন করুন

ব্যবহারকারীর প্রেরিত বার্তাগুলির জন্য রিপোর্টিং ব্যবহার কার্যত একটি বার্তা তৈরি করার পরে "পাঠান" বোতামে ক্লিক করার মতো।

ব্যবহারের রিপোর্টিং ট্রিগার করতে, 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);

আগত বার্তাগুলির জন্য শর্টকাট ব্যবহারের প্রতিবেদন করুন

ব্যবহারকারী যখন একটি SMS, চ্যাট বার্তা, ইমেল বা বিজ্ঞপ্তির মতো একটি বার্তা পায় তখন ব্যবহার প্রতিবেদন ট্রিগার করতে, আপনাকে অবশ্যই actions.intent.RECEIVE_MESSAGE ক্ষমতা সহ ShortcutInfoCompat.Builder#addCapabilityBinding এর মাধ্যমে শর্টকাটে সক্ষমতা বাইন্ডিং উল্লেখ করতে হবে।

কোটলিন

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 সামঞ্জস্যপূর্ণ লাইব্রেরির সাথে কাজ করতে সক্ষম হওয়ার জন্য, অ্যাপের ম্যানিফেস্টে অবশ্যই মেটা-ডেটা চয়নকারী-লক্ষ্য-পরিষেবা এবং উদ্দেশ্য-ফিল্টার সেট থাকতে হবে। বর্তমান ChooserTargetService ডাইরেক্ট শেয়ার API দেখুন।

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

নিম্নলিখিত উদাহরণে, 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>

শেয়ারিং শর্টকাট FAQ

শর্টকাট ব্যবহারের ডেটা কীভাবে সংরক্ষণ করা হয় এবং তারা কি ডিভাইসটি ছেড়ে যায়?

শর্টকাটগুলি একটি এনক্রিপ্ট করা ডিস্ক পার্টিশনে সিস্টেম ডেটা ডিরেক্টরিতে সম্পূর্ণরূপে ডিভাইসে সংরক্ষণ করা হয়। শর্টকাটগুলিতে তথ্য যেমন আইকন, অভিপ্রায় এবং ব্যক্তি এবং সংস্থানগুলির নাম শুধুমাত্র সিস্টেম পরিষেবা এবং একই অ্যাপ দ্বারা অ্যাক্সেসযোগ্য যা শর্টকাটগুলি প্রকাশ করে৷

ডাইরেক্ট শেয়ারের ইতিহাস কি?

ChooserTargetService এর মাধ্যমে অ্যাপগুলিকে ChooserTarget অবজেক্টগুলি প্রদান করার অনুমতি দেওয়ার জন্য আমরা Android 6.0 (API স্তর 23) এ সরাসরি শেয়ার চালু করেছি। ফলাফলগুলি চাহিদার উপর প্রতিক্রিয়াশীলভাবে পুনরুদ্ধার করা হয়েছিল, যার ফলে লক্ষ্যগুলির জন্য একটি ধীর লোডিং সময় হয়৷

Android 10 (API স্তর 29) এ, আমরা ChooserTargetService ডাইরেক্ট শেয়ার API-কে নতুন শেয়ারিং শর্টকাট API দিয়ে প্রতিস্থাপন করেছি। চাহিদা অনুযায়ী প্রতিক্রিয়াশীলভাবে ফলাফল পুনরুদ্ধার করার পরিবর্তে, শেয়ারিং শর্টকাট এপিআই অ্যাপগুলিকে আগে থেকেই সরাসরি শেয়ার লক্ষ্য প্রকাশ করতে দেয়। এটি শেয়ারশীট প্রস্তুত করার সময় সরাসরি শেয়ারের লক্ষ্য পুনরুদ্ধার করার প্রক্রিয়াটিকে দ্রুততর করে। ChooserTargetService ডাইরেক্ট শেয়ার মেকানিজম কাজ করতে থাকবে, তবে সিস্টেমটি এমন টার্গেটকে র‍্যাঙ্ক করে যা এইভাবে প্রদান করা হয় এমন যে কোন টার্গেট শেয়ারিং শর্টকাট API ব্যবহার করে তার চেয়ে কম।

Android 11 (API লেভেল 30) ChooserTargetService পরিষেবাকে অবমূল্যায়ন করেছে, এবং শেয়ারিং শর্টকাট API হল সরাসরি শেয়ার টার্গেট প্রদান করার একমাত্র উপায়।

শেয়ার টার্গেটের জন্য প্রকাশিত শর্টকাটগুলি কীভাবে লঞ্চার শর্টকাটগুলি থেকে আলাদা (লঞ্চারে অ্যাপ আইকনগুলিতে দীর্ঘক্ষণ চাপলে শর্টকাটের সাধারণ ব্যবহার)?

"শেয়ার টার্গেট" উদ্দেশ্যে প্রকাশিত যেকোনো শর্টকাটও একটি লঞ্চার শর্টকাট, এবং আপনার অ্যাপের আইকনে দীর্ঘক্ষণ চাপলে মেনুতে দেখানো হবে। অ্যাকটিভিটি প্রতি সর্বাধিক শর্টকাট গণনা সীমা একটি অ্যাপ প্রকাশ করা মোট শর্টকাট সংখ্যার ক্ষেত্রেও প্রযোজ্য (শেয়ার টার্গেট এবং লিগ্যাসি লঞ্চার শর্টকাট একত্রিত)৷

শেয়ারিং শর্টকাট সংখ্যার নির্দেশিকা কী একজনকে প্রকাশ করা উচিত।

শেয়ারিং শর্টকাটের সংখ্যা getMaxShortcutCountPerActivity(android.content.Context) এর মাধ্যমে উপলব্ধ গতিশীল শর্টকাটের একই সীমাতে সীমাবদ্ধ। কেউ সেই সীমার মধ্যে যে কোনও সংখ্যা প্রকাশ করতে পারে তবে মনে রাখতে হবে যে অ্যাপ লঞ্চারে দীর্ঘক্ষণ চাপলে এবং শেয়ার শীটে ভাগ করার শর্টকাটগুলি দৃশ্যমান হতে পারে। লং-প্রেসের বেশিরভাগ অ্যাপ লঞ্চার পোর্ট্রেট মোডে সর্বাধিক চার বা পাঁচটি শর্টকাট এবং ল্যান্ডস্কেপ মোডে আটটি প্রদর্শন করে। শর্টকাট শেয়ার করার বিষয়ে আরও বিস্তারিত এবং নির্দেশনার জন্য এই FAQ দেখুন।