Aktivite lansman politikası

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.