Perilaku peluncuran aktivitas ditentukan oleh mode peluncuran dalam file
AndroidManifest.xml aplikasi, flag intent, dan ActivityOptions
yang disediakan oleh pemanggil. Gunakan ActivityOption#setLaunchDisplayId(int) untuk
menargetkan tampilan tertentu untuk peluncuran aktivitas.
- Secara default, aktivitas diluncurkan di layar yang sama dengan pemanggil. Misalnya, instance baru aktivitas yang dimulai dari peluncur harus ditempatkan di layar yang sama tanpa flag atau opsi tambahan. Pastikan untuk menggunakan konteks yang benar (Aktivitas versus Aplikasi) untuk peluncuran.
- Jika peluncuran dilakukan dari sumber yang tidak terkait dengan tampilan tertentu (seperti dari shell atau konteks Aplikasi), maka aktivitas akan ditempatkan di tampilan teratas tempat pengguna terakhir berinteraksi dengan perangkat atau tempat aktivitas terakhir diluncurkan.
- Intent untuk meluncurkan aktivitas dapat diselesaikan ke instance aktivitas yang ada dalam sistem. Dalam kasus seperti itu, jika tidak ada tanda tambahan yang diberikan, aktivitas akan muncul di layar yang sama dengan tempat terakhir kali aktivitas tersebut digunakan. Jika target tampilan
ditentukan dengan
ActivityOptions#setTargetDisplayId(), maka aktivitas dipindahkan ke tampilan tersebut (jika diizinkan oleh keamanan dan batasan lainnya).
Batasan keamanan
Untuk mencegah aplikasi berbahaya menyalahgunakan informasi sensitif pengguna dengan membacanya dari permukaan tampilan virtual yang telah dibuatnya, aplikasi dapat meluncurkan aktivitasnya sendiri hanya pada tampilan virtual yang dibuatnya di Android 10. Namun:
- Komponen sistem dengan izin
INTERNAL_SYSTEM_WINDOWdapat diluncurkan di layar mana pun. - Pemanggil dengan izin
ACTIVITY_EMBEDDINGdapat meluncurkan aktivitas dari aplikasi lain yang memiliki tandaActivityInfo.FLAG_ALLOW_EMBEDDED. - Peluncuran aktivitas di layar pribadi hanya diizinkan untuk pemilik atau aktivitas yang ada di layar tersebut.
Pembatasan serupa berlaku untuk menambahkan jendela ke layar.
Android 10 menyertakan metode ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent) untuk memeriksa batasan keamanan aplikasi sebelum mencoba meluncurkan di layar. Di Android 9 (dan yang lebih rendah), peluncuran terbatas akan menghasilkan SecurityException.
Sebagian besar batasan keamanan diterapkan dalam metode
ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay().