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 açı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. Lansman için doğru bağlamı (etkinlik ve 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 etkinliği başlatma amacı, sistemdeki mevcut bir etkinlik örneğine çözülebilir. Bu durumda, ek işaret sağlanmadıysa son kullanıldığı ekranda bir etkinlik gösterilir. Hedef ekran
ActivityOptions#setTargetDisplayId()
ile belirtilirse etkinlik, güvenlik ve diğer kısıtlamalar izin veriyorsa söz konusu ekrana taşınır.
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 verilebilir.
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ümler)'de, kısıtlanmış başlatma sonuçları SecurityException
değerini döndürür.
Çoğu güvenlik kısıtlaması ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
yönteminde uygulanır.