অ্যাক্টিভিটি লঞ্চ করা সংক্রান্ত নীতি

অ্যাক্টিভিটি লঞ্চ করার আচরণ লঞ্চ মোডের মাধ্যমে সংজ্ঞায়িত করা হয়, যা অ্যাপের AndroidManifest.xml ফাইল, ইনটেন্ট ফ্ল্যাগ এবং কলারের মাধ্যমে প্রদান করা ActivityOptions-এ থাকে। অ্যাক্টিভিটি লঞ্চ করার জন্য নির্দিষ্ট ডিসপ্লে টার্গেট করতে ActivityOption#setLaunchDisplayId(int) ব্যবহার করুন।

  • সাধারণত, কলারের ডিসপ্লেতেই অ্যাক্টিভিটি লঞ্চ হয়। যেমন, লঞ্চার থেকে শুরু হওয়া অ্যাক্টিভিটির নতুন ইনস্ট্যান্সকে অতিরিক্ত ফ্ল্যাগ বা বিকল্প ছাড়াই একই ডিসপ্লেতে প্লেস করতে হবে। লঞ্চ করার জন্য সঠিক প্রসঙ্গ (অ্যাক্টিভিটি বনাম অ্যাপ্লিকেশন) ব্যবহার করতে ভুলবেন না।
  • লঞ্চ যদি এমন কোনও সোর্স থেকে করা হয় যা নির্দিষ্ট ডিসপ্লের সাথে যুক্ত নয় (যেমন, শেল বা অ্যাপ্লিকেশন কনটেক্সট থেকে), তাহলে অ্যাক্টিভিটি সবচেয়ে উপরের ডিসপ্লেতে রাখা হয়, যেটির সাথে ব্যবহারকারী শেষবার ইন্টার‍্যাক্ট করেছেন অথবা যেখান থেকে শেষ অ্যাক্টিভিটি লঞ্চ করা হয়েছে।
  • সিস্টেমে আগে থেকে থাকা অ্যাক্টিভিটি ইনস্ট্যান্সের সাথে অ্যাক্টিভিটি লঞ্চ করার ইনটেন্ট সমাধান করা যেতে পারে। এই ধরনের ক্ষেত্রে, কোনও অতিরিক্ত ফ্ল্যাগ প্রদান করা না হলে, অ্যাক্টিভিটি সেই ডিসপ্লেতেই দেখা যায় যেখানে এটি শেষবার ব্যবহার করা হয়েছিল। ActivityOptions#setTargetDisplayId()-এর মাধ্যমে টার্গেট ডিসপ্লে নির্দিষ্ট করা থাকলে, অ্যাক্টিভিটি সেই ডিসপ্লেতে সরানো হয় (নিরাপত্তা ও অন্যান্য বিধিনিষেধের অনুমতি থাকলে)।

নিরাপত্তা সংক্রান্ত বিধিনিষেধ

ক্ষতিকারক অ্যাপ যাতে ব্যবহারকারীর সংবেদনশীল তথ্য সেটির তৈরি করা ভার্চুয়াল ডিসপ্লের সারফেস থেকে পড়ে নিয়ে অপব্যবহার করতে না পারে, তার জন্য Android 10-এ অ্যাপগুলি শুধুমাত্র তাদের তৈরি করা ভার্চুয়াল ডিসপ্লেতে নিজস্ব অ্যাক্টিভিটি লঞ্চ করতে পারে। তবে:

  • INTERNAL_SYSTEM_WINDOW অনুমতি সহ সিস্টেম কম্পোনেন্ট যেকোনও ডিসপ্লেতে লঞ্চ করা যেতে পারে।
  • ACTIVITY_EMBEDDING অনুমতি সহ কলাররা ActivityInfo.FLAG_ALLOW_EMBEDDED ফ্ল্যাগ আছে এমন অন্যান্য অ্যাপ থেকে অ্যাক্টিভিটি লঞ্চ করতে পারবেন।
  • ব্যক্তিগত ডিসপ্লেতে অ্যাক্টিভিটি লঞ্চ করার অনুমতি শুধুমাত্র মালিক বা সেই ডিসপ্লেতে উপস্থিত অ্যাক্টিভিটির জন্য দেওয়া হয়।

ডিসপ্লেতে উইন্ডো যোগ করার ক্ষেত্রেও একই ধরনের বিধিনিষেধ প্রযোজ্য হয়।

ডিসপ্লেতে লঞ্চ করার চেষ্টা করার আগে অ্যাপের জন্য নিরাপত্তা সংক্রান্ত বিধিনিষেধ চেক করতে Android 10-এ ActivityManager#isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) পদ্ধতি অন্তর্ভুক্ত রয়েছে। Android 9 (এবং এর আগের যেকোনও ভার্সনে), সীমিত লঞ্চের ফলাফল SecurityException দেখায়।

অধিকাংশ নিরাপত্তা সংক্রান্ত বিধিনিষেধ ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay() পদ্ধতিতে প্রয়োগ করা হয়।