শর্টকাট পরিচালনা করুন

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

এই পৃষ্ঠাটি আপনার শর্টকাটগুলি পরিচালনা করার জন্য এইগুলি এবং অন্যান্য সাধারণ উপায়গুলি বর্ণনা করে৷

শর্টকাট আচরণ

নিম্নলিখিত বিভাগগুলিতে দৃশ্যমানতা, প্রদর্শনের ক্রম এবং র‌্যাঙ্ক সহ শর্টকাট আচরণ সম্পর্কে সাধারণ তথ্য রয়েছে।

শর্টকাট দৃশ্যমানতা

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

LauncherApps ক্লাস শর্টকাট অ্যাক্সেস করার জন্য লঞ্চার অ্যাপের জন্য API প্রদান করে।

যেহেতু পিন করা শর্টকাটগুলি লঞ্চারেই উপস্থিত হয়, সেগুলি সর্বদা দৃশ্যমান হয়৷ একটি পিন করা শর্টকাট শুধুমাত্র নিম্নলিখিত পরিস্থিতিতে লঞ্চার থেকে সরানো হয়:

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

শেয়ার লক্ষ্যগুলি হ'ল গতিশীল শর্টকাটগুলির একটি উপসেট যা অ্যান্ড্রয়েড শেয়ার শীটের সরাসরি শেয়ার সারিতে প্রদর্শিত হয়৷

অ্যান্ড্রয়েড শেয়ারশিটের একটি স্ক্রিনশট
চিত্র 1. অ্যান্ড্রয়েড শেয়ারশীট। সরাসরি শেয়ারের লক্ষ্যগুলি প্রথম সারিতে প্রদর্শিত হয়, তারপরে র‌্যাঙ্ক করা অ্যাপ এবং তারপরে অ্যাপের তালিকা।

শর্টকাট ডিসপ্লে অর্ডার

যখন লঞ্চার একটি অ্যাপের শর্টকাট প্রদর্শন করে, সেগুলি অবশ্যই নিম্নলিখিত ক্রমে উপস্থিত হবে:

  1. স্ট্যাটিক শর্টকাট : শর্টকাট যার isDeclaredInManifest() পদ্ধতি true ফেরত দেয়।
  2. ডাইনামিক শর্টকাট : শর্টকাট যার ShortcutInfo.isDynamic() মেথড true হয়।

প্রতিটি শর্টকাট টাইপের মধ্যে—স্ট্যাটিক এবং ডাইনামিক—শর্টকাটগুলি ShortcutInfo.getRank অনুসারে বাড়ানোর ক্রম অনুসারে সাজানো হয়। ব্যবহারকারীদের কাছে প্রদর্শনের জন্য প্রাসঙ্গিক শর্টকাট নির্ধারণ করার সময় Google সহকারী শর্টকাট র‌্যাঙ্কও বিবেচনা করে।

র্যাঙ্কগুলি অ-ঋণাত্মক, অনুক্রমিক পূর্ণসংখ্যা। স্ট্যাটিক শর্টকাটগুলি আপনার shortcuts.xml ফাইলে প্রদর্শিত ক্রম অনুসারে প্রথম থেকে শেষ পর্যন্ত র‌্যাঙ্ক করা হয়। গতিশীল শর্টকাটগুলির জন্য, আপনি বিদ্যমান শর্টকাটগুলির র‍্যাঙ্ক আপডেট করতে পারেন যখন আপনি updateShortcuts(Context, List) , addDynamicShortcuts(Context, List) , pushDynamicShortcut(Context, ShortcutInfoCompat) , বা setDynamicShortcuts(Context, List)

শেয়ার টার্গেটের ক্রম অতীতের ব্যবহারকারীর ইতিহাস, নতুনত্ব, ফ্রিকোয়েন্সি, র‌্যাঙ্ক ইঙ্গিত , অ্যাপ ব্যবহার এবং শেয়ারিং শর্টকাটের সাথে যুক্ত কথোপকথনের উপর সেট করা অগ্রাধিকার সহ বিভিন্ন কারণের উপর ভিত্তি করে। শেয়ারিং শর্টকাট এপিআই ব্যবহার করে তৈরি করা শেয়ার লক্ষ্যগুলিকে ChooserTargetService দ্বারা উত্পাদিত শেয়ার লক্ষ্যগুলির তুলনায় অগ্রাধিকার দেওয়া হয় যা Android 11-এ বাতিল করা হয়েছিল৷ Android 12-এ এবং অবচয়িত ChooserTargetService দ্বারা জেনারেট করা উচ্চতর শেয়ার লক্ষ্যগুলি আর শেয়ার শীটে প্রদর্শিত হবে না৷

বেশিরভাগ লঞ্চার সর্বোচ্চ চারটি শর্টকাট প্রদর্শন করে। সংজ্ঞায়িত স্ট্যাটিক শর্টকাট এবং গতিশীল শর্টকাটগুলির যে কোনও সংমিশ্রণের জন্য, লঞ্চার সর্বাধিক দুটি স্ট্যাটিক শর্টকাট এবং দুটি গতিশীল শর্টকাট প্রদর্শন করে৷ উদাহরণস্বরূপ, আপনি যদি চারটি স্ট্যাটিক শর্টকাট সংজ্ঞায়িত করেন এবং প্রোগ্রামগতভাবে তিনটি গতিশীল শর্টকাট তৈরি করেন, তাহলে লঞ্চারটি প্রথম দুটি স্ট্যাটিক শর্টকাট এবং দুটি সবচেয়ে উচ্চ-র্যাঙ্কযুক্ত গতিশীল শর্টকাট প্রদর্শন করে।

একাধিক উদ্দেশ্য এবং ক্রিয়াকলাপ পরিচালনা করুন

আপনি যদি চান যে আপনার অ্যাপটি একাধিক অপারেশন সঞ্চালন করুক যখন আপনার ব্যবহারকারী একটি শর্টকাট সক্রিয় করে, আপনি ক্রমাগত ক্রিয়াকলাপ ট্রিগার করার জন্য এটি কনফিগার করতে পারেন। শর্টকাটের প্রকারের উপর নির্ভর করে আপনি একাধিক অভিপ্রায় নির্ধারণ করে, একটি থেকে অন্য কার্যকলাপ শুরু করে, বা অভিপ্রায় ফ্ল্যাগ সেট করে এটি সম্পন্ন করতে পারেন।

একাধিক অভিপ্রায় বরাদ্দ করুন

ShortcutInfoCompat.Builder দিয়ে একটি শর্টকাট তৈরি করার সময়, আপনি setIntent() এর পরিবর্তে setIntents() ব্যবহার করতে পারেন। setIntents() এ কল করে, ব্যবহারকারী যখন একটি শর্টকাট নির্বাচন করেন, তখন আপনি আপনার অ্যাপের মধ্যে একাধিক অ্যাক্টিভিটি চালু করতে পারেন, তালিকার শেষ অ্যাক্টিভিটিগুলিকে ব্যাক স্ট্যাকে রেখে। ব্যবহারকারী যদি ডিভাইসের পিছনের বোতামে ট্যাপ করে, তবে তারা ডিভাইসের লঞ্চারে ফিরে যাওয়ার পরিবর্তে আপনার অ্যাপে অন্য কার্যকলাপ দেখতে পাবে।

একটি থেকে আরেকটি কার্যকলাপ শুরু করুন

স্ট্যাটিক শর্টকাটগুলিতে কাস্টম অভিপ্রায় ফ্ল্যাগ থাকতে পারে না। একটি স্ট্যাটিক শর্টকাটের প্রথম উদ্দেশ্য সবসময় Intent.FLAG_ACTIVITY_NEW_TASK এবং Intent.FLAG_ACTIVITY_CLEAR_TASK সেট থাকে। এর মানে হল যে যখন আপনার অ্যাপ চলছে, একটি স্ট্যাটিক শর্টকাট চালু হলে অ্যাপে বিদ্যমান সমস্ত ক্রিয়াকলাপ ধ্বংস হয়ে যায়। আপনি যদি এই আচরণটি না চান, তাহলে Activity.onCreate Activity.onCreate(Bundle)যা Activity.finish() :

  1. AndroidManifest.xml ফাইলে, ট্রামপোলিন অ্যাক্টিভিটিতে অ্যাট্রিবিউট অ্যাসাইনমেন্ট android:taskAffinity= "" অন্তর্ভুক্ত করুন।
  2. শর্টকাট রিসোর্স ফাইলে, স্ট্যাটিক শর্টকাটের মধ্যে অভিপ্রায়ে ট্রামপোলিন কার্যকলাপ উল্লেখ করুন।

ট্রামপোলিন কার্যকলাপ সম্পর্কে আরও তথ্যের জন্য, একটি থেকে অন্য কার্যকলাপ শুরু করা দেখুন।

অভিপ্রায় পতাকা সেট

আপনি Intent ফ্ল্যাগের যেকোনো সেট সহ গতিশীল শর্টকাট প্রকাশ করতে পারেন। বিশেষভাবে, আপনার অন্যান্য পতাকার সাথে Intent.FLAG_ACTIVITY_CLEAR_TASK উল্লেখ করুন। অন্যথায়, আপনার অ্যাপ চলাকালীন আপনি যদি অন্য কাজ শুরু করার চেষ্টা করেন, তাহলে লক্ষ্য কার্যকলাপ প্রদর্শিত নাও হতে পারে।

কার্য এবং অভিপ্রায় ফ্ল্যাগ সম্পর্কে আরও জানতে, টাস্ক এবং ব্যাক স্ট্যাক দেখুন।

শর্টকাট আপডেট করুন

প্রতিটি অ্যাপের লঞ্চার আইকনে সর্বাধিক সংখ্যক স্ট্যাটিক এবং ডাইনামিক শর্টকাট থাকতে পারে যা getMaxShortcutCountPerActivity দ্বারা ফেরত দেওয়া মানের সমান। একটি অ্যাপ তৈরি করতে পারে এমন পিন করা শর্টকাটের সংখ্যার কোনো সীমা নেই।

যখন একটি ডায়নামিক শর্টকাট পিন করা হয়, এমনকি যখন প্রকাশক এটিকে ডাইনামিক শর্টকাট হিসেবে সরিয়ে দেয়, তখনও পিন করা শর্টকাটটি দৃশ্যমান এবং লঞ্চ করা যায়। এটি একটি অ্যাপে getMaxShortcutCountPerActivity() সংখ্যক শর্টকাট থাকতে দেয়।

নিম্নলিখিত উদাহরণটি বিবেচনা করুন, যা ধরে নেয় যে getMaxShortcutCountPerActivity() দ্বারা প্রত্যাবর্তিত মান হল 4 :

  1. একটি চ্যাট অ্যাপ চারটি গতিশীল শর্টকাট প্রকাশ করে, চারটি সাম্প্রতিক কথোপকথনের প্রতিনিধিত্ব করে: c1, c2, c3 এবং c4।
  2. ব্যবহারকারী চারটি শর্টকাট পিন করে।
  3. পরে, ব্যবহারকারী তিনটি অতিরিক্ত কথোপকথন শুরু করে: c5, c6 এবং c7। প্রকাশক অ্যাপ তার গতিশীল শর্টকাটগুলি পুনরায় প্রকাশ করে৷ নতুন ডায়নামিক শর্টকাট তালিকা হল: c4, c5, c6, এবং c7।

অ্যাপটিকে c1, c2 এবং c3 মুছে ফেলতে হবে, কারণ এটি চারটির বেশি গতিশীল শর্টকাট প্রদর্শন করতে পারে না। যাইহোক, c1, c2, এবং c3 এখনও পিন করা শর্টকাট যা ব্যবহারকারী অ্যাক্সেস এবং চালু করতে পারে।

ব্যবহারকারী তখন মোট সাতটি শর্টকাট অ্যাক্সেস করতে পারে যা প্রকাশক অ্যাপের কার্যকলাপের সাথে লিঙ্ক করে। কারণ মোটের মধ্যে সর্বাধিক সংখ্যক শর্টকাট এবং তিনটি পিন করা শর্টকাট রয়েছে৷

  1. অ্যাপটি বিদ্যমান সাতটি শর্টকাট আপডেট করতে updateShortcuts(Context, List) ব্যবহার করতে পারে। উদাহরণস্বরূপ, চ্যাট সহকর্মীদের আইকন পরিবর্তন হলে আপনি শর্টকাটের এই সেটটি আপডেট করতে পারেন।
  2. আপনি একই আইডিগুলির সাথে বিদ্যমান শর্টকাটগুলি আপডেট করতে addDynamicShortcuts(Context, List) এবং setDynamicShortcuts(Context, List) পদ্ধতি ব্যবহার করতে পারেন। যাইহোক, আপনি নন-ডাইনামিক, পিন করা শর্টকাট আপডেট করার জন্য এগুলি ব্যবহার করতে পারবেন না, কারণ এই দুটি পদ্ধতি শর্টকাটগুলির প্রদত্ত তালিকাগুলিকে গতিশীল শর্টকাটে রূপান্তর করার চেষ্টা করে।

Google অ্যাসিস্ট্যান্টের মতো সহকারী অ্যাপে প্রদর্শনের জন্য যে শর্টকাটগুলি পুশ করা যেতে পারে তার কোনও সীমা নেই৷ সহকারী অ্যাপে ব্যবহারের জন্য শর্টকাট তৈরি এবং আপডেট করতে ShortcutManagerCompat Jetpack লাইব্রেরির pushDynamicShortcut() পদ্ধতি ব্যবহার করুন। এছাড়াও, ডাইনামিক লিঙ্কগুলিকে Google অ্যাসিস্ট্যান্টে দেখানোর যোগ্য করে তুলতে আপনার অ্যাপে Google শর্টকাট ইন্টিগ্রেশন লাইব্রেরি যোগ করুন।

শর্টকাট আপডেট করা সহ অ্যাপ শর্টকাটগুলির জন্য নির্দেশিকা সম্পর্কে আরও জানতে, শর্টকাটগুলির জন্য সেরা অনুশীলনগুলি দেখুন৷

সিস্টেম লোকেল পরিবর্তনগুলি পরিচালনা করুন

অ্যাপ্লিকেশানগুলিকে অবশ্যই গতিশীল এবং পিন করা শর্টকাটগুলি আপডেট করতে হবে যখন তারা Intent.ACTION_LOCALE_CHANGED পাবে৷ ACTION_LOCALE_CHANGED সম্প্রচার যা সিস্টেম লোকেলে একটি পরিবর্তন নির্দেশ করে৷

শর্টকাট ব্যবহার ট্র্যাক করুন

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

  • ব্যবহারকারী প্রদত্ত আইডি দিয়ে শর্টকাট নির্বাচন করে।
  • অ্যাপের মধ্যে, ব্যবহারকারী ম্যানুয়ালি একই শর্টকাটের সাথে সম্পর্কিত ক্রিয়াটি সম্পূর্ণ করে।

আপনার অ্যাপটি pushDynamicShortcut() পদ্ধতিতে কল করে এবং একটি প্রাসঙ্গিক ঘটনা ঘটলে শর্টকাটের আইডি পাস করার মাধ্যমে গতিশীল শর্টকাটের ব্যবহার ট্র্যাক করে। এই পদ্ধতির সাথে গতিশীল শর্টকাট ব্যবহার ঠেলে Google অ্যাসিস্ট্যান্টের মতো সহকারী অ্যাপগুলিকে ব্যবহারকারীদের প্রাসঙ্গিক শর্টকাটগুলি সুপারিশ করতে দেয়৷ যেহেতু pushDynamicShortcut() পদ্ধতি কল করার সময় ব্যবহারের রিপোর্ট করে, একই শর্টকাটের জন্য reportShortcutUsed() পদ্ধতিতে কল করবেন না।

কথোপকথন-সম্পর্কিত শর্টকাটগুলির জন্য, বহির্গামী এবং আগত বার্তাগুলির ব্যবহার ট্র্যাক করা গুরুত্বপূর্ণ৷ বিশদ বিবরণের জন্য, মানুষ এবং কথোপকথনের জন্য সেরা অনুশীলনগুলি দেখুন৷

শর্টকাট অক্ষম করুন

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

হার সীমিত

setDynamicShortcuts(), addDynamicShortcuts() , বা updateShortcuts() পদ্ধতিগুলি ব্যবহার করার সময়, আপনি শুধুমাত্র একটি ব্যাকগ্রাউন্ড অ্যাপে এই পদ্ধতিগুলিকে নির্দিষ্ট সংখ্যক বার কল করতে সক্ষম হতে পারেন — একটি অ্যাপ যার অগ্রভাগে কোনও কার্যকলাপ বা পরিষেবা নেই৷ আপনি এই পদ্ধতিগুলিকে কতবার কল করতে পারেন তার নির্দিষ্ট সংখ্যার সীমাকে রেট লিমিটিং বলা হয়। এই বৈশিষ্ট্যটি ShortcutManagerCompat অতিরিক্ত ব্যবহার করা ডিভাইস সংস্থান থেকে বাধা দেয়।

যখন রেট লিমিটিং সক্রিয় থাকে, isRateLimitingActive() সত্য দেখায়। যাইহোক, নির্দিষ্ট ইভেন্টের সময় রেট সীমিত রিসেট করা হয়, তাই পটভূমির অ্যাপগুলিও ShortcutManager পদ্ধতিতে কল করতে পারে যতক্ষণ না হারের সীমা আবার পৌঁছে যায়। এই ইভেন্টগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • একটি অ্যাপ অগ্রভাগে আসে।
  • সিস্টেম লোকেল পরিবর্তন হয়।
  • ব্যবহারকারী একটি বিজ্ঞপ্তিতে ইনলাইন উত্তর ক্রিয়া সম্পাদন করে।

আপনি যদি বিকাশ বা পরীক্ষার সময় হার সীমিত করার সম্মুখীন হন, আপনি ডিভাইসের সেটিংস থেকে বিকাশকারী বিকল্প > শর্টকাট ম্যানেজার রেট-লিমিটিং রিসেট নির্বাচন করতে পারেন, অথবা আপনি adb তে নিম্নলিখিত কমান্ডটি প্রবেশ করতে পারেন:

$ adb shell cmd shortcut reset-throttling [ --user your-user-id ]

ব্যাকআপ এবং পুনরুদ্ধার

আপনার অ্যাপের ম্যানিফেস্ট ফাইলে android:allowBackup="true " অ্যাট্রিবিউট অ্যাসাইনমেন্ট অন্তর্ভুক্ত করে ডিভাইস পরিবর্তন করার সময় আপনি ব্যবহারকারীদের আপনার অ্যাপে ব্যাকআপ এবং ক্রিয়াকলাপ পুনরুদ্ধার করতে দিতে পারেন। আপনি যদি ব্যাকআপ এবং পুনরুদ্ধার সমর্থন করেন তবে অ্যাপ শর্টকাট সম্পর্কে নিম্নলিখিত পয়েন্টগুলি মনে রাখবেন:

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

নিম্নলিখিত কোড স্নিপেট দেখায় যে কীভাবে আপনার অ্যাপের গতিশীল শর্টকাটগুলি পুনরুদ্ধার করা যায় এবং কীভাবে আপনার অ্যাপের পিন করা শর্টকাটগুলি সংরক্ষিত ছিল কিনা তা পরীক্ষা করা যায়:

কোটলিন

class MyMainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (ShortcutManagerCompat.dynamicShortcuts.size == 0) {
            // Application restored. Re-publish dynamic shortcuts.
            if (ShortcutManagerCompat.pinnedShortcuts.size > 0) {
                // Pinned shortcuts are restored. Use updateShortcuts() to make
                // sure they contain up-to-date information.
            }

        }
    }
    // ...
}

জাভা

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (ShortcutManagerCompat.getDynamicShortcuts().size() == 0) {
            // Application restored. Re-publish dynamic shortcuts.
            if (ShortcutManagerCompat.getPinnedShortcuts().size() > 0) {
                // Pinned shortcuts are restored. Use pdateShortcuts() to make
                // sure they contain up-to-date information.
            }
        }
    }
    // ...
}