गतिविधि लॉन्च नीति

गतिविधि लॉन्च व्यवहार को ऐप्स की AndroidManifest.xml फ़ाइलों में लॉन्च मोड, इरादे के झंडे और कॉलर द्वारा प्रदान किए गए गतिविधि विकल्पों द्वारा परिभाषित किया गया है। गतिविधि लॉन्च के लिए किसी विशिष्ट डिस्प्ले को लक्षित करने के लिए ActivityOption#setLaunchDisplayId(int) का उपयोग करें।

  • डिफ़ॉल्ट रूप से, गतिविधि कॉलर के समान डिस्प्ले पर लॉन्च होती है। उदाहरण के लिए, लॉन्चर से शुरू की गई गतिविधि का एक नया उदाहरण बिना किसी अतिरिक्त झंडे या विकल्प के उसी डिस्प्ले पर रखा जाना चाहिए। लॉन्च के लिए सही संदर्भ (गतिविधि बनाम एप्लिकेशन) का उपयोग करना सुनिश्चित करें।
  • यदि लॉन्च किसी ऐसे स्रोत से किया जाता है जो किसी विशिष्ट डिस्प्ले (जैसे शेल या एप्लिकेशन संदर्भ से) से जुड़ा नहीं है, तो गतिविधि को शीर्ष डिस्प्ले पर रखा जाता है, जिस पर उपयोगकर्ता ने आखिरी बार डिवाइस के साथ इंटरैक्ट किया था या जहां से आखिरी गतिविधि थी लॉन्च किया गया.
  • किसी गतिविधि को लॉन्च करने के इरादे को सिस्टम में मौजूदा गतिविधि उदाहरण से हल किया जा सकता है। ऐसे मामले में, यदि कोई अतिरिक्त झंडे प्रदान नहीं किए गए थे, तो एक गतिविधि उसी डिस्प्ले पर दिखाई देती है जहां इसका अंतिम बार उपयोग किया गया था। यदि लक्ष्य डिस्प्ले को ActivityOptions#setTargetDisplayId() के साथ निर्दिष्ट किया गया है, तो गतिविधि को उस डिस्प्ले पर ले जाया जाता है (यदि सुरक्षा और अन्य प्रतिबंधों द्वारा अनुमति दी गई हो)।

सुरक्षा प्रतिबंध

किसी दुर्भावनापूर्ण ऐप को उसके द्वारा बनाए गए वर्चुअल डिस्प्ले की सतह से पढ़कर उपयोगकर्ता-संवेदनशील जानकारी का दुरुपयोग करने से रोकने के लिए, ऐप्स केवल एंड्रॉइड 10 में अपने निर्माण के वर्चुअल डिस्प्ले पर अपनी गतिविधियां लॉन्च कर सकते हैं। हालाँकि:

  • INTERNAL_SYSTEM_WINDOW अनुमति वाले सिस्टम घटक किसी भी डिस्प्ले पर लॉन्च हो सकते हैं।
  • ACTIVITY_EMBEDDING अनुमति वाले कॉलर्स अन्य ऐप्स से गतिविधियां लॉन्च कर सकते हैं जिनके पास ActivityInfo.FLAG_ALLOW_EMBEDDED ध्वज है।
  • निजी डिस्प्ले पर गतिविधि लॉन्च की अनुमति केवल मालिक या उस डिस्प्ले पर मौजूद गतिविधियों के लिए है।

डिस्प्ले में विंडोज़ जोड़ने पर भी इसी तरह के प्रतिबंध लागू होते हैं।

एंड्रॉइड 10 में डिस्प्ले पर लॉन्च करने का प्रयास करने से पहले ऐप के लिए सुरक्षा प्रतिबंधों की जांच करने के ActivityManager#isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) विधि शामिल है। एंड्रॉइड 9 (और उससे पहले) में, प्रतिबंधित लॉन्च परिणाम SecurityException को फेंक देते हैं।

अधिकांश सुरक्षा प्रतिबंध ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay() विधि में लागू होते हैं।