Etkinlik başlatma davranışı, uygulamaların AndroidManifest.xml
dosyalarındaki başlatma modları, intent işaretleri ve arayan tarafından sağlanan ActivityOptions tarafından tanımlanır. Etkinlik başlatmak için belirli bir ekranı hedeflemek üzere ActivityOption#setLaunchDisplayId(int)
öğesini kullanın.
- Etkinlik varsayılan olarak arayanla aynı ekranda başlatılır. Örneğin, başlatıcıdan başlatılan bir etkinliğin yeni bir örneği, ek işaretler veya seçenekler olmadan aynı ekrana yerleştirilmelidir. Başlatma için doğru bağlamı (Etkinlik veya Uygulama) kullandığınızdan emin olun.
- Başlatma işlemi belirli bir ekranla ilişkili olmayan bir kaynaktan (kabuk veya uygulama bağlamı gibi) gerçekleştirilirse etkinlik, kullanıcının cihazla en son etkileşimde bulunduğu veya son etkinliğin başlatıldığı üst ekrana yerleştirilir.
- Bir etkinlik başlatma niyeti, sistemdeki mevcut bir etkinlik örneğine çözümlenebilir. Bu durumda, ek işaret sağlanmadıysa son kullanıldığı ekranda bir etkinlik gösterilir. Hedef ekran
ActivityOptions#setTargetDisplayId()
ile belirtilirse etkinlik bu ekrana taşınır (güvenlik ve diğer kısıtlamalar tarafından izin veriliyorsa).
Güvenlik kısıtlamaları
Kötü amaçlı bir uygulamanın, oluşturduğu sanal ekranın yüzeyinden okuyarak kullanıcıya özel bilgileri kötüye kullanmasını önlemek için uygulamalar, Android 10'da kendi etkinliklerini yalnızca kendi oluşturdukları sanal ekranda başlatabilir. Ancak:
INTERNAL_SYSTEM_WINDOW
izinine sahip sistem bileşenleri herhangi bir ekranda başlatılabilir.ACTIVITY_EMBEDDING
iznine sahip arayanlar,ActivityInfo.FLAG_ALLOW_EMBEDDED
işaretine sahip diğer uygulamalardan etkinlik başlatabilir.- Gizli ekranlarda etkinlik başlatmaya yalnızca ekranın sahibi veya ekranda bulunan etkinlikler izin verir.
Ekranlara pencere ekleme işlemi için de benzer kısıtlamalar geçerlidir.
Android 10, uygulamayı ekranda başlatmaya çalışmadan önce uygulamanın güvenlik kısıtlamalarını kontrol etmek için ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent)
yöntemini içerir. Android 9 (ve önceki) sürümlerde, kısıtlanmış başlatma sonuçları SecurityException
olarak değerlendirilir.
Çoğu güvenlik kısıtlaması ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
yönteminde uygulanır.