اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
سياسة بدء النشاط
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتم تحديد سلوك تشغيل النشاط من خلال أوضاع التشغيل فيملفّات
AndroidManifest.xml
للتطبيقات وعلامات النية وActivityOptions
التي يقدّمها المُرسِل. استخدِم ActivityOption#setLaunchDisplayId(int)
لتحديد شاشة معيّنة لإطلاق النشاط.
- يتم تشغيل النشاط تلقائيًا على الشاشة نفسها التي يستخدمها المتصل.
على سبيل المثال، يجب أن يتم
وضع نسخة جديدة من نشاط تم تشغيله من مشغّل التطبيقات على الشاشة نفسها بدون إشارات أو خيارات إضافية. احرص على استخدام
السياق الصحيح (النشاط مقابل التطبيق) لبدء التشغيل.
- إذا تمّ الإطلاق من مصدر غير مرتبط بشاشة معيّنة
(مثل بدء تشغيل من سياق التطبيق أو من واجهة مستخدِم)، يتمّ وضع النشاط على الشاشة العلوية
التي تفاعل معها المستخدِم مع الجهاز آخر مرة أو التي تمّ من خلالها بدء النشاط الأخير.
- يمكن حلّ نية بدء نشاط إلى مثيل نشاط
حالي في النظام. في هذه الحالة، إذا لم يتم تقديم أي علامات إضافية، يظهر
النشاط على الشاشة نفسها التي تم استخدامه فيها آخر مرة. إذا تم تحديد الشاشة المستهدفة
باستخدام
ActivityOptions#setTargetDisplayId()
، يتم نقل
النشاط إلى تلك الشاشة (إذا كان ذلك مسموحًا به من خلال قيود الأمان وغيرها).
القيود المتعلقة بالأمان
لمنع أي تطبيق ضار من إساءة استخدام المعلومات الحساسة للمستخدمين
من خلال قراءتها من سطح شاشة افتراضية أنشأها، يمكن للتطبيقات
بدء أنشطتها فقط على شاشة افتراضية أنشأتها
في Android 10. تجدر الإشارة إلى ما يلي:
- يمكن تشغيل مكونات النظام التي تملك الإذن
INTERNAL_SYSTEM_WINDOW
على أي شاشة.
- يمكن للمتصلين الذين لديهم الإذن
ACTIVITY_EMBEDDING
بدء
الأنشطة من تطبيقات أخرى تحمل العلامة ActivityInfo.FLAG_ALLOW_EMBEDDED
.
- لا يُسمح ببدء الأنشطة على شاشات خاصة إلا للمالك أو
الأنشطة الظاهرة على تلك الشاشة.
تنطبق قيود مشابهة على إضافة نوافذ إلى الشاشات.
يتضمّن نظام التشغيل Android 10 طريقة
ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent)
للتحقّق من قيود الأمان المفروضة على
التطبيق قبل محاولة تشغيله على شاشة. في Android 9
(والإصدارات الأقدم)، تؤدي نتائج التشغيل المحظور إلى ظهور SecurityException
.
يتم تطبيق معظم قيود الأمان في الطريقة
ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Activity launch policy\n\n*Activity launch behavior* is defined by launch modes in the\n`AndroidManifest.xml` files of apps, intent flags, and ActivityOptions\nprovided by the caller. Use `ActivityOption#setLaunchDisplayId(int)` to\ntarget a specific display for activity launch.\n\n- By default, the activity launches on the same display as the caller. For example, a new instance of an activity started from the launcher should be placed on the same display without additional flags or options. Be sure to use the correct context (Activity versus Application) for launch.\n- If the launch is performed from a source not associated with a specific display (such as from a shell or Application context), then the activity is placed on the top display on which the user last interacted with the device or from which the last activity was launched.\n- Intent to launch an activity can be resolved to an existing activity instance in the system. In such a case, if no additional flags were provided, an activity surfaces on the same display where it was last used. If the target display is specified with `ActivityOptions#setTargetDisplayId()`, then the activity is moved to that display (if allowed by security and other restrictions).\n\nSecurity restrictions\n---------------------\n\nTo prevent a malicious app from misappropriating user-sensitive information\nby reading it from the surface of a virtual display that it has created, apps can\nlaunch their own activities *only* on a virtual display of their creation\nin Android 10. However:\n\n- System components with the `INTERNAL_SYSTEM_WINDOW` permission can launch on any display.\n- Callers with the `ACTIVITY_EMBEDDING` permission can launch activities from other apps that have the flag `ActivityInfo.FLAG_ALLOW_EMBEDDED`.\n- Activity launches on private displays are allowed only for the owner or activities present on that display.\n\nSimilar restrictions apply to adding windows to displays.\n\nAndroid 10 includes the\n`ActivityManager#isActivityStartAllowedOnDisplay(Context context, int\ndisplayId, Intent intent)` method to check security restrictions for the\napp before attempting to launch on a display. In Android 9\n(and lower), restricted launch results throw `SecurityException`.\n\nMost security restrictions are applied in the\n`ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()` method."]]