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

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

এই পৃষ্ঠায় আপনার শর্টকাটগুলো পরিচালনা করার এই এবং আরও কয়েকটি প্রচলিত উপায় বর্ণনা করা হয়েছে।

শর্টকাট আচরণ

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

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

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

LauncherApps ক্লাসটি লঞ্চার অ্যাপগুলোকে শর্টকাট অ্যাক্সেস করার জন্য এপিআই (API) প্রদান করে।

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

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

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

একটি অ্যান্ড্রয়েড শেয়ারশিট
চিত্র ১. অ্যান্ড্রয়েড শেয়ারশিট। প্রথম সারিতে সরাসরি শেয়ার করার লক্ষ্যবস্তুগুলো, এরপরে র‍্যাঙ্ক করা অ্যাপগুলো এবং তারপরে অ্যাপের তালিকাগুলো দেখা যায়।

শর্টকাট প্রদর্শনের ক্রম

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

  1. স্ট্যাটিক শর্টকাট : যে শর্টকাটগুলোর isDeclaredInManifest() মেথড true রিটার্ন করে।
  2. ডাইনামিক শর্টকাট : যেসব শর্টকাটের ShortcutInfo.isDynamic() মেথড true রিটার্ন করে।

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

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

শেয়ার টার্গেটগুলোর ক্রম বিভিন্ন বিষয়ের উপর নির্ভর করে, যার মধ্যে রয়েছে ব্যবহারকারীর পূর্ববর্তী ইতিহাস, সাম্প্রতিকতা, পুনরাবৃত্তি, র‍্যাঙ্ক হিন্ট , অ্যাপের ব্যবহার এবং শেয়ারিং শর্টকাটের সাথে যুক্ত কথোপকথনে সেট করা অগ্রাধিকার। শেয়ারিং শর্টকাটস এপিআই (Sharing Shortcuts API) ব্যবহার করে তৈরি করা শেয়ার টার্গেটগুলো, অ্যান্ড্রয়েড ১১-এ বাতিল (deprecated) করা ChooserTargetService দ্বারা উৎপাদিত শেয়ার টার্গেটগুলোর চেয়ে বেশি অগ্রাধিকার পায়। অ্যান্ড্রয়েড ১২ এবং তার পরবর্তী সংস্করণগুলোতে, বাতিল হয়ে যাওয়া ChooserTargetService দ্বারা তৈরি শেয়ার টার্গেটগুলো আর শেয়ার শিটে দেখা যাবে না।

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

একাধিক ইন্টেন্ট এবং অ্যাক্টিভিটি পরিচালনা করুন

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

একটি কাজ থেকে অন্যটি শুরু করুন

স্ট্যাটিক শর্টকাটে কাস্টম ইন্টেন্ট ফ্ল্যাগ থাকতে পারে না। একটি স্ট্যাটিক শর্টকাটের প্রথম ইন্টেন্টে সর্বদা Intent.FLAG_ACTIVITY_NEW_TASK এবং Intent.FLAG_ACTIVITY_CLEAR_TASK সেট করা থাকে। এর মানে হলো, যখন আপনার অ্যাপটি চালু থাকে, তখন একটি স্ট্যাটিক শর্টকাট চালু করা হলে অ্যাপের মধ্যে থাকা সমস্ত অ্যাক্টিভিটি বন্ধ হয়ে যায়। আপনি যদি এই আচরণটি না চান, তাহলে একটি ট্রাম্পোলিন অ্যাক্টিভিটি ব্যবহার করতে পারেন—এটি একটি অদৃশ্য অ্যাক্টিভিটি যা অন্য একটি অ্যাক্টিভিটি শুরু করে—এর জন্য আপনাকে একটি লঞ্চ ব্লকের ভিতরে অথবা কম্পোজ কন্টেন্ট সেট করার আগে onCreate কল করতে হবে।

  1. AndroidManifest.xml file ট্রাম্পোলিন অ্যাক্টিভিটিতে android:taskAffinity="" অ্যাট্রিবিউট অ্যাসাইনমেন্টটি অন্তর্ভুক্ত করুন।

  2. শর্টকাট রিসোর্স ফাইলে, স্ট্যাটিক শর্টকাটের ভেতরের ইন্টেন্টে ট্রাম্পোলিন অ্যাক্টিভিটিটি রেফারেন্স করুন।

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

অভিপ্রায় ফ্ল্যাগ সেট করুন

আপনি যেকোনো Intent ফ্ল্যাগ সেট ব্যবহার করে ডাইনামিক শর্টকাট প্রকাশ করতে পারেন। বিশেষত, শর্টকাটের ইন্টেন্টে Intent.FLAG_ACTIVITY_SINGLE_TOP এবং Intent.FLAG_ACTIVITY_CLEAR_TOP এর সংমিশ্রণটি উল্লেখ করুন। এটি নিশ্চিত করে যে, যদি আপনার ComponentActivity ইতিমধ্যেই সক্রিয় থাকে, তবে এটিকে ধ্বংস না করে ফোরগ্রাউন্ডে আনা হয় এবং পুনরায় ব্যবহার করা হয়, যা আপনার সিঙ্গেল-অ্যাক্টিভিটি আর্কিটেকচারকে onNewIntent() এর মাধ্যমে শর্টকাট ইভেন্টটি সুন্দরভাবে পরিচালনা করতে সাহায্য করে।

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

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

প্রতিটি অ্যাপের লঞ্চার আইকনে, 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) মেথডগুলো ব্যবহার করতে পারেন। তবে, আপনি এগুলো নন-ডাইনামিক, পিন করা শর্টকাট আপডেট করার জন্য ব্যবহার করতে পারবেন না, কারণ এই দুটি মেথড প্রদত্ত শর্টকাটের তালিকাগুলোকে ডাইনামিক শর্টকাটে রূপান্তর করার চেষ্টা করে।

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

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

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

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

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

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

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

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

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

শর্টকাট নিষ্ক্রিয় করুন

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

হার সীমিতকরণ

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

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

  • একটি অ্যাপ সামনে চলে আসে।
  • সিস্টেমের অবস্থান পরিবর্তিত হয়।
  • ব্যবহারকারী একটি নোটিফিকেশনের উপর ইনলাইন রিপ্লাই অ্যাকশনটি সম্পাদন করেন।

ডেভেলপমেন্ট বা টেস্টিং করার সময় যদি আপনি রেট লিমিটিং-এর সম্মুখীন হন, তাহলে আপনি ডিভাইসের সেটিংস থেকে Developer Options > Reset ShortcutManager rate-limiting নির্বাচন করতে পারেন, অথবা adb তে নিম্নলিখিত কমান্ডটি লিখতে পারেন:

$ adb shell cmd shortcut reset-throttling [ --user <var>your-user-id</var> ]

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

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

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

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

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (ShortcutManagerCompat.getDynamicShortcuts(this).isEmpty()) {
            // Application restored. Re-publish dynamic shortcuts.
            if (ShortcutManagerCompat.getPinnedShortcuts(this).isNotEmpty()) {
                // Pinned shortcuts are restored. Use updateShortcuts() to make
                // sure they contain up-to-date information.
            }

        }
    }
    // ...
}