ऐक्टिविटी लॉन्च करने की नीति

ऐक्टिविटी लॉन्च करने का तरीका, ऐप्लिकेशन की 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() तरीके में लागू होती हैं.