কার্যকলাপ লঞ্চ নীতি

অ্যাক্টিভিটি লঞ্চ আচরণ অ্যাপ্লিকেশানগুলির 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) পদ্ধতি অন্তর্ভুক্ত করে যাতে একটি ডিসপ্লেতে লঞ্চ করার চেষ্টা করার আগে অ্যাপটির নিরাপত্তা সীমাবদ্ধতা পরীক্ষা করা যায়। অ্যান্ড্রয়েড 9 (এবং নিম্নতর) এ, সীমিত লঞ্চের ফলাফলগুলি SecurityException থ্রো করে।

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