מדיניות השקת פעילות

התנהגות השקת פעילות מוגדרת על ידי מצבי השקה בקבצי AndroidManifest.xml של אפליקציות, דגלי כוונה ו-ActivityOptions שסופקו על ידי המתקשר. השתמש ActivityOption#setLaunchDisplayId(int) כדי למקד לתצוגה ספציפית להפעלת פעילות.

  • כברירת מחדל, הפעילות מופעלת באותו תצוגה כמו המתקשר. לדוגמה, מופע חדש של פעילות שהתחילה מהמשגר ​​צריך להיות ממוקם על אותה תצוגה ללא דגלים או אפשרויות נוספות. הקפד להשתמש בהקשר הנכון (פעילות מול אפליקציה) לצורך ההשקה.
  • אם ההשקה מבוצעת ממקור שאינו משויך לתצוגה ספציפית (כגון מהקשר של מעטפת או אפליקציה), אזי הפעילות ממוקמת בתצוגה העליונה שבה המשתמש קיים לאחרונה אינטראקציה עם המכשיר או שממנה בוצעה הפעילות האחרונה הושק.
  • ניתן לפתור כוונה להשיק פעילות למופע פעילות קיים במערכת. במקרה כזה, אם לא סופקו דגלים נוספים, תופיע פעילות באותה תצוגה שבה נעשה בה שימוש אחרון. אם תצוגת היעד מצוינת עם ActivityOptions#setTargetDisplayId() , אז הפעילות מועברת לתצוגה זו (אם מותרת על ידי הגבלות אבטחה ואחרות).

הגבלות אבטחה

כדי למנוע מאפליקציה זדונית לנצל מידע רגיש למשתמש על ידי קריאתו משטח התצוגה הווירטואלית שהיא יצרה, אפליקציות יכולות להפעיל את הפעילויות שלהן רק בתצוגה וירטואלית של יצירתן באנדרואיד 10. עם זאת:

  • רכיבי מערכת עם הרשאת INTERNAL_SYSTEM_WINDOW יכולים להפעיל בכל תצוגה.
  • מתקשרים עם הרשאת ACTIVITY_EMBEDDING יכולים להפעיל פעילויות מיישומים אחרים בעלי הדגל ActivityInfo.FLAG_ALLOW_EMBEDDED .
  • השקות פעילות בתצוגות פרטיות מותרות רק לבעלים או לפעילויות הקיימות בתצוגה זו.

הגבלות דומות חלות על הוספת חלונות לתצוגות.

אנדרואיד 10 כולל את השיטה ActivityManager#isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) לבדיקת מגבלות אבטחה עבור האפליקציה לפני ניסיון להפעיל על צג. באנדרואיד 9 (ומטה), תוצאות השקה מוגבלות זורקות SecurityException .

רוב מגבלות האבטחה מיושמות בשיטת ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay() ‎.