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