Etkinlik başlatma politikası

Etkinlik başlatma davranışı, arayan tarafından sağlanan uygulamaların AndroidManifest.xml dosyalarındaki, amaç işaretlerindeki ve ActivityOptions dosyalarındaki başlatma modları tarafından tanımlanır. Etkinlik başlatmak üzere belirli bir ekranı hedeflemek için ActivityOption#setLaunchDisplayId(int) öğesini kullanın.

  • Varsayılan olarak etkinlik, 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 ve Uygulama) kullandığınızdan emin olun.
  • Başlatma, belirli bir ekranla ilişkili olmayan bir kaynaktan (kabuk veya Uygulama bağlamı gibi) gerçekleştiriliyorsa etkinlik, kullanıcının cihazla en son etkileşimde bulunduğu veya son etkinliğin gerçekleştiği üst ekrana yerleştirilir. başlatıldı.
  • Bir etkinliği başlatma amacı, sistemdeki mevcut bir etkinlik örneğine çözümlenebilir. Böyle bir durumda, eğer ek işaretler sağlanmadıysa, bir etkinlik en son kullanıldığı yerde görüntülenir. Hedef ekran ActivityOptions#setTargetDisplayId() ile belirtilirse etkinlik o ekrana taşınır (güvenlik ve diğer kısıtlamalar izin veriyorsa).

Güvenlik kısıtlamaları

Kötü amaçlı bir uygulamanın, oluşturduğu sanal ekranın yüzeyinden okuyarak kullanıcıya duyarlı bilgileri kötüye kullanmasını önlemek için uygulamalar, kendi etkinliklerini yalnızca Android 10'da oluşturdukları sanal ekranda başlatabilir. Ancak:

  • INTERNAL_SYSTEM_WINDOW iznine 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 etkinlikler başlatabilir.
  • Özel ekranlarda etkinlik başlatmalara yalnızca o ekranda bulunan etkinlik sahibi veya etkinlikler için izin verilir.

Benzer sınırlamalar ekranlara pencere eklenmesinde de geçerlidir.

Android 10, bir ekranda başlatmayı denemeden önce uygulamaya yönelik güvenlik kısıtlamalarını kontrol etmek için ActivityManager#isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) yöntemini içerir. Android 9'da (ve daha eski sürümlerde), kısıtlı başlatma sonuçları SecurityException oluşturur.

Çoğu güvenlik kısıtlaması ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay() yönteminde uygulanır.