تقدّم هذه الصفحة نظرة عامة على واجهات برمجة التطبيقات في المؤسسة، والميزات وتغييرات السلوك المتوفرة في Android 9.
واجهة مستخدم الملف الشخصي للعمل
يتضمن Android 9 (المستوى 28 من واجهة برمجة التطبيقات) تغييرات على واجهة المستخدم في مشغّل التطبيقات التلقائي لمساعدة المستخدمين في الفصل بين التطبيقات الشخصية وتطبيقات العمل. يمكن للشركات المصنعة للأجهزة التي تتيح ذلك عرض تطبيقات المستخدمين في علامات تبويب منفصلة للعمل وعلامات تبويب شخصية. سهّلنا أيضًا على مستخدمي الأجهزة تشغيل الملف الشخصي للعمل وإيقافه من خلال تضمين مفتاح تبديل في علامة تبويب العمل في مشغّل التطبيقات.
![](https://developer.android.com/static/images/about/versions/pie/p-work-profile.jpg?authuser=6&hl=ar)
عند توفير الملفات الشخصية للعمل والأجهزة المُدارة، يشتمل Android 9 على رسومات توضيحية متحركة لمساعدة مستخدمي الأجهزة في التعرّف على هذه الميزات.
تبديل التطبيقات بين الملفات الشخصية
يتضمّن Android 9 واجهات برمجة تطبيقات لتشغيل نسخة أخرى من التطبيق في ملف شخصي مختلف
لمساعدة المستخدمين في التبديل بين الحسابات. على سبيل المثال، يمكن أن يوفر تطبيق البريد الإلكتروني
واجهة مستخدم تسمح للمستخدم بالتبديل بين الملف الشخصي والملف
الشخصي للعمل للوصول إلى حسابَي بريد إلكتروني. يمكن لجميع التطبيقات استدعاء واجهات برمجة التطبيقات هذه لتشغيل النشاط
الرئيسي للتطبيق نفسه إذا كان مثبتًا بالفعل في الملف الشخصي الآخر. لإضافة التبديل بين الحسابات بين الملفات الشخصية إلى تطبيقك، يُرجى اتّباع الخطوات الواردة أدناه لطرق الاتّصال
من فئة CrossProfileApps
:
- يمكنك الاتصال بـ
getTargetUserProfiles()
للحصول على قائمة بالملفات الشخصية التي يمكنك تشغيل مثيل آخر من التطبيق فيها. تتحقق هذه الطريقة من أن التطبيق مثبت في الملفات الشخصية. - يمكنك الاتصال بالرقم
getProfileSwitchingIconDrawable()
للحصول على رمز يمكنك استخدامه لتمثيل ملف شخصي آخر. - يمكنك الاتصال بالرقم
getProfileSwitchingLabel()
للحصول على نص مترجَم يطلب من المستخدم تبديل الملفات الشخصية. - يمكنك الاتصال بـ
startMainActivity()
لتشغيل مثيل لتطبيقك في ملف شخصي آخر.
تأكَّد من أنّ النشاط الرئيسي الذي تريد إطلاقه مذكور في ملف البيان
في تطبيقك، ويتضمّن إجراء هدف ACTION_MAIN
ويتضمّن
فئة هدف CATEGORY_LAUNCHER
.
تفعيل الملفات الشخصية للعمل أو إيقافها آليًا
يمكن لمشغِّل التطبيقات التلقائي (أو التطبيقات التي لديها الإذن MANAGE_USERS
أو
MODIFY_QUIET_MODE
) تفعيل الملف الشخصي للعمل أو إيقافه من خلال الاتصال بالرقم
UserManager.requestQuietModeEnabled()
. يمكنك فحص القيمة المعروضة لمعرفة ما إذا كان المستخدم بحاجة إلى تأكيد
بيانات اعتماده قبل أن تتغير الحالة. وبما أنّ التغيير قد لا يحدث
على الفور، يمكنك الاستماع إلى بث
ACTION_MANAGED_PROFILE_AVAILABLE
أو
ACTION_MANAGED_PROFILE_UNAVAILABLE
لمعرفة الوقت المناسب لتعديل واجهة المستخدم.
يمكن لتطبيقك التحقّق من حالة الملف الشخصي للعمل من خلال الاتصال على الرقم
UserManager.isQuietModeEnabled()
.
قفل أي تطبيق على الجهاز
بدءًا من نظام التشغيل Android 9، يمكن لمالكي الأجهزة ومالكي الملفات الشخصية (من المستخدمين الثانويين) قفل أي تطبيق على شاشة الجهاز من خلال تفعيل وضع قفل الجهاز. وفي السابق، كان يتعيّن على مطوّري التطبيقات إتاحة وضع قفل المهام في تطبيقاتهم. كما يوسع Android 9 واجهات برمجة تطبيقات مهام القفل لمالكي الملفات الشخصية للمستخدمين الثانويين غير التابعين. اتبع الخطوات أدناه لقفل أحد التطبيقات على الشاشة:
- يمكنك استدعاء
DevicePolicyManager.setLockTaskPackages()
لإدراج التطبيقات في القائمة المسموح بها لوضع قفل المهمة. - يمكنك الاتصال بالرقم
ActivityOptions.setLockTaskEnabled()
لتشغيل أحد التطبيقات المُدرَجة في القائمة المسموح بها في وضع قفل المهمة.
لإيقاف تطبيق في وضع قفل المَهمّة، عليك إزالته من القائمة المسموح بها
لوضع قفل المهام باستخدام
DevicePolicyManager.setLockTaskPackages()
.
تفعيل ميزات واجهة مستخدم النظام
عند تفعيل وضع قفل المهمة، يمكن لمالكي الأجهزة ومالكي الملفات الشخصية تفعيل ميزات معيّنة لواجهة مستخدم النظام على الجهاز من خلال طلب DevicePolicyManager.setLockTaskFeatures()
وتمرير حقل بت لعلامات الميزات التالية:
LOCK_TASK_FEATURE_NONE
LOCK_TASK_FEATURE_SYSTEM_INFO
LOCK_TASK_FEATURE_HOME
- لا يمكن استخدام
LOCK_TASK_FEATURE_NOTIFICATIONS
إلا معLOCK_TASK_FEATURE_HOME
. LOCK_TASK_FEATURE_KEYGUARD
- لا يمكن استخدام
LOCK_TASK_FEATURE_OVERVIEW
إلا معLOCK_TASK_FEATURE_HOME
. LOCK_TASK_FEATURE_GLOBAL_ACTIONS
يمكنك الاتصال بالرقم DevicePolicyManager.getLockTaskFeatures()
للحصول على قائمة بالميزات المتاحة على أحد الأجهزة عند تفعيل وضع قفل المهمة. وعند خروج جهاز من وضع القفل، يعود إلى الحالة التي تفرضها سياسات الجهاز الأخرى.
إيقاف مربّعات حوار الأخطاء
في بعض البيئات، مثل العروض التوضيحية لبائعي التجزئة أو عروض المعلومات العلنية، قد لا تريد إظهار مربّعات حوار الأخطاء للمستخدمين. يمكن لوحدة التحكّم بسياسة الجهاز (DPC) إيقاف مربّعات حوار أخطاء النظام للتطبيقات المعطّلة أو غير المستجيبة عن طريق إضافة التقييد الذي يفرضه المستخدم على DISALLOW_SYSTEM_ERROR_DIALOGS
. ويؤثر هذا التقييد في جميع مربعات الحوار عند تطبيقها من قِبل مالك الجهاز، ولكن يتم فقط منع مربعات حوار الأخطاء المعروضة لدى المستخدم الأساسي أو الثانوي عندما يتم تطبيق التقييد من قبل مالكي الملف الشخصي. لا يؤثر هذا التقييد على
الملفات الشخصية للعمل.
في نظام التشغيل Android 9، لا تعرض التطبيقات التي تعمل في الوضع المجسم بملء الشاشة فقاعة التذكير عند تفعيل وضع القفل. فقاعة التذكير هي لوحة تظهر للمستخدمين (عند التشغيل لأول مرة) توضح كيفية الخروج من الوضع المجسم.
دعم عدة مستخدمين على أجهزة مخصصة
يقدّم نظام التشغيل Android 9 مفهوم المستخدم المؤقت للأجهزة المخصّصة (المعروفة سابقًا باسم أجهزة COSU). المستخدمون المؤقتون هم مستخدمون لفترة قصيرة مخصّصين للحالات التي يتشارك فيها عدة مستخدمين في جهاز واحد مخصّص. يشمل ذلك جلسات المستخدمين العامة على أجهزة مثل أكشاك تسجيل الوصول في المكتبات أو الضيافة، بالإضافة إلى الجلسات المستمرة بين مجموعة ثابتة من المستخدمين على الأجهزة، على سبيل المثال العاملين في نوبات العمل.
يجب إنشاء حسابات المستخدمين المؤقتة في الخلفية. ويتم إنشاء هذه التطبيقات كمستخدمين ثانويين على الجهاز وتتم إزالتها (إلى جانب التطبيقات والبيانات المرتبطة بها) عند إيقافها أو تبديلها أو إعادة تشغيل الجهاز. لإنشاء مستخدم مؤقت، يمكن لمالكي الأجهزة إجراء ما يلي:
- ضبط العلامة
MAKE_USER_EPHEMERAL
عند الاتصال علىDevicePolicyManager.createAndManageUser()
. - استدعِ
DevicePolicyManager.startUserInBackground()
لبدء المستخدم المؤقت في الخلفية.
ملاحظة: إنّ التطبيقات التي تستهدف الإصدار 9 من نظام التشغيل Android من المفترض أن تتعرّف على الرمز UserManager.UserOperationException
عند الاتصال بالرقم
createAndManageUser()
. عليك استدعاء طريقة
getUserOperationResult()
للاستثناء لمعرفة سبب
عدم إنشاء المستخدم.
تلقّي إشعارات الأحداث
يتلقى DeviceAdminReceiver
إشعارات
بالأحداث التالية:
onUserStarted()
: يتم استدعاء هذا الإجراء عند بدء تشغيل أحد المستخدمِين.onUserSwitched()
: يتم استدعاء هذا الإجراء عند اكتمال تبديل المستخدم.onUserStopped()
: يتم استدعاء الإجراء معonUserRemoved()
عند توقّف المستخدم أو تسجيل الخروج.
عرض رسائل الأحداث للمستخدمين
يمكن لمالكي الأجهزة ضبط الرسائل التي يتم عرضها للمستخدمين عند بدء جلساتهم وإنهائها:
- يمكنك استخدام
DevicePolicyManager.setStartUserSessionMessage()
لضبط الرسالة التي يتم عرضها للمستخدم عند بدء جلسة المستخدم. لاسترداد الرسالة، اتصل بـDevicePolicyManager.getStartUserSessionMessage()
. - يمكنك استخدام
DevicePolicyManager.setEndUserSessionMessage()
لضبط الرسالة التي يتم عرضها للمستخدم عند انتهاء جلسة المستخدم. لاسترداد الرسالة، اتصل بـDevicePolicyManager.getEndUserSessionMessage()
.
تسجيل الخروج وإيقاف المستخدمين
يمكن لمالكي الأجهزة استخدام DevicePolicyManager.setLogoutEnabled()
لتحديد ما إذا كان
تسجيل الخروج مفعَّلاً للمستخدمين الثانويين أم لا. للتحقّق ممّا إذا تم تفعيل تسجيل الخروج، اتصل بالرقم
DevicePolicyManager.isLogoutEnabled()
.
يمكن لمالكي الملفات الشخصية للمستخدمين الثانويين الاتصال بـ
DevicePolicyManager.logoutUser()
لإيقاف المستخدم الثانوي
والتبديل مرة أخرى إلى المستخدم الأساسي.
يمكن لمالكي الأجهزة استخدام DevicePolicyManager.stopUser()
لإيقاف مستخدم ثانوي محدّد.
التخزين المؤقت للحزم
لتبسيط إدارة حسابات المستخدمين على الأجهزة المشتركة مع مجموعة ثابتة من المستخدمين، مثل أجهزة العاملين في نوبات العمل، من الممكن تخزين الحِزم مؤقتًا اللازمة لجلسات متعددة المستخدمين:
يمكنك استدعاء
DevicePolicyManager.setKeepUninstalledPackages()
لتحديد قائمة الحِزم التي سيتم الاحتفاظ بها كملفات APK. لاسترداد قائمة بهذه الحِزم، يمكنك استدعاءDevicePolicyManager.getKeepUninstalledPackages()
.يمكنك الاتصال بـ
DevicePolicyManager.installExistingPackage()
لتثبيت حزمة تم الاحتفاظ بها بعد الإزالة من خلالsetKeepUninstalledPackages()
.
طُرق وثوابت إضافية
يتضمّن نظام التشغيل Android 9 أيضًا الطرق والثوابت التالية لتوفير مزيد من الدعم لجلسات المستخدم على الأجهزة المشتركة:
- تحصل
DevicePolicyManager.getSecondaryUsers()
على قائمة بجميع المستخدمين الثانويين على الجهاز. - يمكنك فرض قيود على المستخدم
DISALLOW_USER_SWITCH
من خلال طلب رمزDevicePolicyManager.addUserRestriction()
لحظر تبديل المستخدمين. LEAVE_ALL_SYSTEM_APPS_ENABLED
هي علامة متاحة لـDevicePolicyManager.createAndManageUser()
. وعند ضبطها، لا يتم إيقاف تطبيقات النظام أثناء إدارة حسابات المستخدمين.- يتم تجاهل
UserManager.UserOperationException
من خلالDevicePolicyManager.createAndManageUser()
عندما لا يمكن إنشاء مستخدم، ويشمل الاستثناء سبب الفشل.
محو بيانات الحزمة وإزالة الحسابات
يمكن لمالكي الأجهزة ومالكي الملفات الشخصية الاتصال بالرمز
clearApplicationUserData()
لمحو بيانات المستخدم
لحزمة معيّنة. لإزالة حساب من
AccountManager
، يمكن لمالكي الأجهزة والملفات الشخصية الاتصال بالرمز
removeAccount()
.
القيود المفروضة على المستخدمين ومزيد من التحكّم في الإعدادات
يقدم نظام التشغيل Android 9 مجموعة من القيود المفروضة على المستخدمين لوحدات التحكّم بسياسة الجهاز (DPC)، بالإضافة إلى إمكانية ضبط أسماء نقاط الوصول (APN) والوقت والمنطقة الزمنية وإعدادات النظام على الجهاز.
إعداد أسماء نقاط الوصول (APN)
يمكن لمالكي الأجهزة استخدام الطرق التالية في فئة DevicePolicyManager
لضبط أسماء نقاط الوصول (APN) على الجهاز:
addOverrideApn()
updateOverrideApn()
removeOverrideApn()
getOverrideApns()
setOverrideApnEnabled()
isOverrideApnEnabled()
ضبط الوقت والمنطقة الزمنية
يمكن لمالكي الأجهزة استخدام الطرق التالية في الفئة DevicePolicyManager
لضبط الوقت والمنطقة الزمنية على الجهاز:
فرض قيود المستخدم على الإعدادات المهمة
يضيف Android 9 قيودًا على المستخدم لإيقاف ميزات النظام وإعداداته. لإضافة قيد، استدعِ DevicePolicyManager.addUserRestriction()
مع أحد ثوابت UserManager
التالية:
DISALLOW_AIRPLANE_MODE
DISALLOW_AMBIENT_DISPLAY
DISALLOW_CONFIG_BRIGHTNESS
DISALLOW_CONFIG_DATE_TIME
DISALLOW_CONFIG_LOCATION
DISALLOW_CONFIG_SCREEN_TIMEOUT
DISALLOW_PRINTING
في حال فرض DISALLOW_CONFIG_BRIGHTNESS
وDISALLOW_CONFIG_SCREEN_TIMEOUT
على أحد الأجهزة، لا يزال بإمكان مالكي الأجهزة ضبط إعدادات سطوع
الشاشة ووضع
سطوع الشاشة ومهلة غلق الشاشة
على الجهاز باستخدام واجهة برمجة التطبيقات
DevicePolicyManager.setSystemSetting()
.
البيانات الخاضعة للقياس
يمكن لمالكي الأجهزة ومالكي الملفات الشخصية منع التطبيقات من استخدام شبكات
البيانات التي تفرض تكلفة استخدام على الجهاز. تُعتبر الشبكة خاضعة للقياس عندما يكون المستخدم حساسًا لاستخدام البيانات بشكل كبير بسبب التكلفة أو الحدود القصوى للبيانات أو مشاكل البطارية والأداء. لمنع التطبيقات من استخدام الشبكات التي تفرض تكلفة استخدام، يُرجى استدعاء
DevicePolicyManager.setMeteredDataDisabledPackages()
تمرير قائمة بأسماء الحِزم. لاسترداد التطبيقات المحظورة حاليًا، يمكنك الاتصال بالرقم
DevicePolicyManager.getMeteredDataDisabledPackages()
.
لمعرفة المزيد من المعلومات عن البيانات التي تفرض تكلفة استخدام في Android، يمكنك الاطّلاع على تحسين استخدام بيانات الشبكة.
نقل وحدات التحكّم بسياسة الجهاز (DPC)
يمكن لوحدات التحكّم بسياسة الجهاز (DPC) نقل ملكية جهاز أو ملف شخصي للعمل إلى وحدة التحكّم بسياسة الجهاز (DPC) أخرى. يمكنك نقل الملكية لنقل بعض الميزات إلى واجهة برمجة التطبيقات لإدارة Android، أو لنقل الأجهزة من وحدة التحكّم بسياسة الجهاز القديمة، أو مساعدة مشرفي تكنولوجيا المعلومات في الانتقال إلى إدارة الخدمات الجوّالة للمؤسسات (EMM). بما أنّك تغيّر فقط ملكية وحدة التحكّم بسياسة الجهاز (DPC)، لا يمكنك استخدام هذه الميزة لتغيير نوع الإدارة، مثل الانتقال من جهاز مُدار إلى ملف شخصي للعمل أو العكس.
يمكنك استخدام مورد XML سياسات مشرف الجهاز للإشارة إلى أنّ هذا الإصدار من وحدة التحكّم بسياسة الجهاز يتيح نقل البيانات. تشير وحدة التحكّم بسياسة الجهاز المستهدف
إلى أنه يمكن الحصول على الملكية عن طريق تضمين عنصر باسم
<support-transfer-ownership>
. يوضح المثال أدناه كيفية إجراء ذلك في
ملف XML لمشرف الجهاز التابع لوحدة التحكّم بسياسة الجهاز:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
يمكن لوحدات التحكّم بسياسة الجهاز التي تريد نقل الملكية إلى تطبيق وحدة التحكّم بسياسة الجهاز الجديد التحقّق مما إذا كان إصدار وحدة التحكّم بسياسة الجهاز المستهدف يتيح إجراء عملية النقل من خلال طلب طريقة DeviceAdminInfo
supportsTransferOwnership()
. قبل نقل الملكية، تقع على عاتق وحدة التحكّم بسياسة الجهاز المصدر مسؤولية التحقق من وحدة التحكّم بسياسة الجهاز المستهدفة من خلال مقارنة توقيعات التطبيقات. تتضمن الفئة PackageManager
طرقًا
للتعامل مع توقيعات توقيع التعليمات البرمجية.
يحتفظ Android بنظام وحدة التحكّم بسياسة الجهاز (DPC) وسياسات المستخدم المصدر من خلال عملية
نقل الملكية، ولا تحتاج وحدات التحكّم بسياسة الجهاز إلى نقل هذه البيانات. يمكن لوحدة التحكّم بسياسة الجهاز المصدر تمرير بيانات مخصّصة إلى وحدة التحكّم بسياسة الجهاز المستهدفة باستخدام أزواج المفتاح/القيمة في PersistableBundle
. بعد نجاح عملية النقل، يمكن لوحدة التحكّم بسياسة الجهاز المستهدف استرداد هذه البيانات من خلال طلب DevicePolicyManager.getTransferOwnershipBundle()
.
خطوات نقل ملكية جهاز مُدار أو ملف شخصي للعمل هي نفسها:
- يتحقّق وحدة التحكّم بسياسة الجهاز (DPC) المصدر من أنّ إصدار وحدة التحكّم بسياسة الجهاز المستهدف يتيح نقل البيانات وتتأكّد من تطابق توقيع تطبيق وحدة التحكّم بسياسة الجهاز المستهدف مع قيمة متوقّعة.
- يطلب وحدة التحكّم بسياسة الجهاز المصدر
transferOwnership()
لبدء عملية النقل. - يجعل النظام وحدة التحكّم بسياسة الجهاز المستهدفة مشرفًا نشطًا ويضبطه كمالك للجهاز المُدار أو الملف الشخصي للعمل.
- يتلقى وحدة التحكّم بسياسة الجهاز المستهدف استدعاء
onTransferOwnershipComplete()
ويمكنه ضبط نفسه باستخدام قيم من الوسيطةbundle
. - وفي حال حدوث خطأ في عملية النقل، سيعيد النظام الملكية إلى وحدة التحكّم بسياسة الجهاز (DPC) المصدر. إذا كانت وحدة التحكّم بسياسة الجهاز المصدر بحاجة إلى تأكيد نجاح عملية نقل الملكية، يمكنك الاتصال بـ
isAdminActive()
للتحقق من أن وحدة التحكّم بسياسة الجهاز المصدر لم تعد هي المشرف النشط.
تتلقى جميع التطبيقات التي يتم تشغيلها في الملف الشخصي للعمل البث
ACTION_PROFILE_OWNER_CHANGED
عند
تغيير مالك الملف الشخصي. تتلقى التطبيقات التي تعمل على جهاز مُدار بث ACTION_DEVICE_OWNER_CHANGED
عندما يتغير مالك الجهاز.
الملفات الشخصية للعمل على الأجهزة المُدارة بالكامل
يحدث نقل مثيلين من وحدة التحكّم بسياسة الجهاز (DPC) كمالك للجهاز ومالك ملف شخصي على مرحلتين. عندما يكون الملف الشخصي أو الملف الشخصي للعمل تابعين، يُرجى إكمال عملية النقل بالترتيب التالي:
- أولاً، عليك نقل ملكية الملف الشخصي للعمل.
- انتظِر ريثما تتم معاودة الاتصال على "
DeviceAdminReceiver
"onTransferAffiliatedProfileOwnershipComplete()
للتأكّد من أنّه تم نقل الملف الشخصي للعمل إلى "وحدة التحكّم بسياسة الجهاز" المستهدَفة. - وأخيرًا، انقل ملكية الجهاز المُدار إلى وحدة التحكّم بسياسة الجهاز المستهدفة.
تأجيل التحديثات عبر شبكة غير سلكيّة (OTA)
يمكن لمالكي الأجهزة تأجيل تحديثات النظام عبر الهواء على الأجهزة لمدة تصل إلى 90 يومًا لتجميد إصدار نظام التشغيل الذي يعمل على هذه الأجهزة خلال فترات حرجة (مثل الأعياد). يفرض النظام موردًا احتياطيًا إلزاميًا لمدة 60 يومًا بعد أي فترة تجميد محددة لمنع تجميد الجهاز إلى أجل غير مسمى.
خلال فترة إيقاف الميزة:
- لن تتلقّى الأجهزة أي إشعارات بشأن التحديثات المعلّقة عبر الهواء.
- لا تثبِّت الأجهزة أي تحديثات عبر الهواء على نظام التشغيل.
- لا يمكن لمستخدمي الأجهزة البحث يدويًا عن تحديثات عبر الهواء في الإعدادات.
لضبط فترة إيقاف التحديثات، يُرجى الاتصال بالرقم
SystemUpdatePolicy.setFreezePeriods()
. نظرًا لأن فترة التجميد تتكرر سنويًا، يتم تمثيل تاريخيّ البدء والانتهاء للفترة بأعداد صحيحة تحتسب عدد الأيام منذ بداية السنة. يجب أن يبدأ يوم البدء
بعد 60 يومًا على الأقل من نهاية أي فترة تجميد سابقة. يمكن لمالكي
الأجهزة الاتصال بـ SystemUpdatePolicy.getFreezePeriods()
للحصول
على قائمة بفترات إيقاف التحديثات التي تم ضبطها سابقًا في كائن سياسة تحديث النظام.
تم تحديث DevicePolicyManager.getSystemUpdatePolicy()
لإرجاع أي فترات توقف عن العمل حددها مالك الجهاز.
فرض قيود على المشاركة في ملف شخصي للعمل
يمكن لمالكي الملفات الشخصية منع المستخدمين من مشاركة البيانات الشخصية في الملف الشخصي للعمل
على الجهاز عن طريق إضافة القيود المفروضة على المستخدم
DISALLOW_SHARE_INTO_MANAGED_PROFILE
.
ويمنع هذا الحظر التعامل مع الأغراض ومشاركتها التالية:
- تطبيقات الملف الشخصي التي تشارك البيانات والملفات مع تطبيقات الملف الشخصي للعمل.
- تختار تطبيقات الملف الشخصي للعمل العناصر من الملف الشخصي - على سبيل المثال، الصور أو الملفات.
بعد فرض هذه القيود، سيظل بإمكان وحدة التحكّم بسياسة الجهاز السماح بأهداف النشاط بين الملفات الشخصية
من خلال طلب الرقم
addCrossProfileIntentFilter()
.
مفاتيح الأجهزة الآمنة وشهادات الجهاز
يضيف نظام التشغيل Android 9 واجهات برمجة تطبيقات لمساعدتك في العمل باستخدام المفاتيح والشهادات التي يمكنك دمجها لتحديد الأجهزة بأمان. يمكن لوحدة التحكّم بسياسة الجهاز التي تعمل في أوضاع مالك الملف الشخصي أو مالك الجهاز أو أداة تثبيت الشهادات المفوَّضة إكمال المهام التالية:
- يمكنك إنشاء مفاتيح وشهادات في الأجهزة الآمنة (مثل بيئة تنفيذ موثوقة (TEE) أو العنصر الآمن (SE)) على جهاز Android. ولا تغادر المفاتيح التي تم إنشاؤها الأجهزة الآمنة مطلقًا ويمكن استخدامها من خلال سلسلة مفاتيح Android. اتصل على
DevicePolicyManager.generateKeyPair()
لتقديم الخوارزمية (راجِعKeyPairGenerator
) وأي معرّفات أجهزة تريد التصديق عليها، مثل الرقم التسلسلي أو رمز IMEI. لمزيد من المعلومات حول تغييرات الأجهزة الآمنة، يُرجى الاطّلاع على تحسينات الأمان على Android 9. - ربط شهادة بمفتاح حالي أنشأه الجهاز عليك استدعاء
DevicePolicyManager.setKeyPairCertificate()
لتوفير الاسم المستعار للمفتاح الحالي وسلسلة الشهادات، بدءًا من الشهادة الورقة وحتى سلسلة الثقة بالترتيب. - تأكَّد من أنّ الجهاز الآمن يحمي المفتاح قبل استخدامه. للتأكّد من الآليات التي تحمي المفتاح، يُرجى اتّباع الخطوات الواردة في إقرار المفتاح.
- ويمكن لمالكي الأجهزة وأدوات تثبيت الشهادات المفوَّضة تلقّي بيان موقَّع
بمعرِّفات أجهزة الأجهزة التي تعمل بإصدارات نظام التشغيل Android. اطلب
DevicePolicyManager.generateKeyPair()
تمرير قيمة أو أكثر منID_TYPE_BASE_INFO
أوID_TYPE_SERIAL
ID_TYPE_IMEI
أوID_TYPE_MEID
في الوسيطةidAttestationFlags
. تتضمن الشهادة المعروضة أرقام تعريف الأجهزة في سجل المصادقة. إذا كنت لا تريد تضمين أرقام تعريف الأجهزة، عليك تمرير0
. يمكن لمالكي الملفات التجارية تلقّي معلومات الشركة المصنّعة فقط (عبر تمريرID_TYPE_BASE_INFO
). للتأكّد من أنّ الجهاز يمكنه مصادقة أرقام التعريف، يُرجى الاتصال على الرقمisDeviceIdAttestationSupported()
. - يمكنك منع مستخدمي الأجهزة من إساءة استخدام مفاتيح المؤسسة (في المهام غير التابعة للمؤسسة)
من خلال إلغاء اختيار شهادات المفاتيح. لا يتضمن النظام شهادات غير قابلة
للاختيار في لوحة المنتقي. في طريقة معاودة الاتصال في
DeviceAdminReceiver.onChoosePrivateKeyAlias()
، يمكنك عرض الاسم المستعار على مفتاح مؤسستك حتى يختار النظام الشهادة تلقائيًا نيابةً عن المستخدم. لجعل مفتاح غير قابل للاختيار، عليك استدعاء طرقDevicePolicyManager
التالية:setKeyPairCertificate()
ومرِّرfalse
للوسيطةisUserSelectable
.installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
واحذفINSTALLKEY_SET_USER_SELECTABLE
من الوسيطةflags
.
من خلال الجمع بين واجهات برمجة التطبيقات هذه، يمكن للمؤسسات التعرّف على الأجهزة بشكل آمن والتأكّد من سلامتها قبل توفير إمكانية الوصول إليها:
- يُنشئ جهاز Android مفتاحًا خاصًا جديدًا في الأجهزة الآمنة. يظل المفتاح الخاص سريًا لأنّ المفتاح الخاص لا ينفصل عن الأجهزة الآمنة مطلقًا.
- يستخدم الجهاز المفتاح لإنشاء طلب توقيع شهادة (CSR) وإرساله إلى الخادم. يتضمن CSR سجل المصادقة الذي يحتوي على أرقام تعريف الجهاز.
- يتحقّق الخادم من سلسلة الشهادات (الجذور في شهادة Google) ويستخلص البيانات الوصفية للجهاز من سجلّ المصادقة.
- يتأكد الخادم من أنّ الأجهزة الآمنة تحمي المفتاح الخاص وأنّ أرقام تعريف الجهاز تتطابق مع سجلّات المؤسسة. كما يمكن للخادم التحقق من استيفاء إصدارات نظام Android وتصحيح الأخطاء لأي متطلبات.
- ينشئ الخادم شهادة من CSR ويرسل الشهادة إلى الجهاز.
- يعمل الجهاز على إقران الشهادة بالمفتاح الخاص (الذي يظل في الأجهزة الآمنة) للسماح للتطبيقات بالاتصال بخدمات المؤسسة.
المزيد من واجهات برمجة التطبيقات والميزات والتغييرات المتعلقة بالأمان
أرقام تعريف سجلات الأمان وسجلات الشبكة
يتضمّن نظام Android 9 أرقام تعريف في سجلّات أنشطة الشبكة والأمان. يزداد المعرّف الرقمي بشكل رتيب لكل حدث، ما يسهّل على مشرفي تكنولوجيا المعلومات اكتشاف الفجوات في سجلّاتهم. نظرًا لأن سجلات الأمان وسجلات الشبكة هي مجموعات منفصلة، يحتفظ النظام بقيم معرفات منفصلة.
يمكنك الاتصال بالرقم SecurityEvent.getId()
أو
DnsEvent.getId()
أو
ConnectEvent.getId()
للحصول على قيمة المعرّف. ويعيد النظام ضبط المعرّف عند تفعيل وحدة التحكّم بسياسة الجهاز لتسجيل الدخول أو عند إعادة تشغيل الجهاز.
إنّ سجلات الأمان التي يتم جلبها عن طريق طلب البيانات
DevicePolicyManager.retrievePreRebootSecurityLogs()
لا تتضمّن أرقام التعريف هذه.
تسجيل الدخول للأمان
يخصّص تسجيل الأمان لكل SecurityEvent
مستوى سجلّ. للحصول على مستوى السجل،
اتصل بـ getLogLevel()
. تعرِض هذه الطريقة قيمة على مستوى السجلّ يمكن أن تكون واحدة مما يلي: LEVEL_INFO
أو LEVEL_WARNING
أو LEVEL_ERROR
.
ويسجّل Android 9 الأحداث المُدرجة في الجدول أدناه في سجلات الأمان. للتحقّق من علامة حدث، يمكنك الاتصال بالرقم getTag()
. لاسترداد بيانات الحدث، يمكنك الاتصال بالرقم getData()
.
علامة | وصف الحدث |
---|---|
TAG_CERT_AUTHORITY_INSTALLED |
يشير ذلك المصطلح إلى محاولة لتثبيت شهادة جذر جديدة في وحدة تخزين بيانات اعتماد النظام. |
TAG_CERT_AUTHORITY_REMOVED |
يشير ذلك المصطلح إلى محاولة لإزالة شهادة جذر من وحدة تخزين بيانات اعتماد النظام. |
TAG_CERT_VALIDATION_FAILURE |
تعذّر على شهادة Wi-Fi إجراء عملية تحقق أثناء الاتصال. |
TAG_CRYPTO_SELF_TEST_COMPLETED |
أكمل النظام الاختبار الذاتي للتشفير. |
TAG_KEYGUARD_DISABLED_FEATURES_SET |
أوقف تطبيق مشرف ميزات جهاز أو شاشة قفل الملف الشخصي للعمل. |
TAG_KEY_DESTRUCTION |
يشير هذا المصطلح إلى محاولة لحذف مفتاح تشفير. |
TAG_KEY_GENERATED |
يشير هذا المصطلح إلى محاولة لإنشاء مفتاح تشفير جديد. |
TAG_KEY_IMPORT |
يشير هذا المصطلح إلى محاولة لاستيراد مفتاح تشفير جديد. |
TAG_KEY_INTEGRITY_VIOLATION |
رصَد نظام Android تلفًا لمفتاح مصادقة أو تشفير. |
TAG_LOGGING_STARTED |
بدأ تسجيل تسجيل الدخول الأمني. |
TAG_LOGGING_STOPPED |
توقف التسجيل عن طريق تسجيل الدخول للأمان. |
TAG_LOG_BUFFER_SIZE_CRITICAL |
وصل المخزن المؤقت لسجل الأمان إلى% 90 من سعته. |
TAG_MAX_PASSWORD_ATTEMPTS_SET |
حدَّد تطبيق المشرف عدد المحاولات المسموح بها لإدخال كلمة المرور غير الصحيحة. |
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET |
أحد التطبيقات الإدارية ضبط الحد الأقصى لمهلة قفل الشاشة |
TAG_MEDIA_MOUNT |
تم تثبيت وسائط مساحة تخزين قابلة للإزالة على الجهاز. |
TAG_MEDIA_UNMOUNT |
تم إلغاء تثبيت وسائط التخزين القابلة للإزالة من الجهاز. |
TAG_OS_SHUTDOWN |
تم إيقاف تشغيل نظام Android. |
TAG_OS_STARTUP |
بدأ تشغيل نظام Android. |
TAG_PASSWORD_COMPLEXITY_SET |
أحد تطبيقات المشرف يحدّد متطلبات تعقيد كلمة المرور. |
TAG_PASSWORD_EXPIRATION_SET |
ضبط تطبيق مشرف مدة انتهاء صلاحية كلمة المرور |
TAG_PASSWORD_HISTORY_LENGTH_SET |
ضبط أحد تطبيقات المشرف مدة سجلّ كلمات المرور، مما يمنع المستخدمين من إعادة استخدام كلمات المرور القديمة. |
TAG_REMOTE_LOCK |
أقفل تطبيق مشرف الجهاز أو الملف الشخصي للعمل. |
TAG_USER_RESTRICTION_ADDED |
وضَع تطبيق مشرف قيودًا على المستخدم. |
TAG_USER_RESTRICTION_REMOVED |
أزال أحد تطبيقات المشرف القيود المفروضة على المستخدم. |
TAG_WIPE_FAILURE |
تعذّرت محاولة حجب بيانات جهاز أو ملف شخصي للعمل. |
تحدي شاشة قفل الملف الشخصي للعمل
اعتبارًا من الإصدار Android 9، يمكن لمالكي الملفات الشخصية أن يطلبوا من المستخدمين ضبط اختبار قفل
شاشة منفصل لملفهم الشخصي للعمل باستخدام القيد المفروض على المستخدم
DISALLOW_UNIFIED_PASSWORD
.
للتحقق مما إذا كان المستخدم لديه نفس اختبار قفل الشاشة الذي تم ضبطه على الجهاز والملف
الشخصي للعمل، اتصل بالرقم
DevicePolicyManager.isUsingUnifiedPassword()
.
إذا كان الجهاز يحتوي على شاشة قفل منفصلة للملف الشخصي للعمل،
لا تضبط أداة DevicePolicyManager.setMaximumTimeToLock()
إلا مهلة شاشة القفل للملف الشخصي للعمل بدلاً من الجهاز بأكمله.
الوصول إلى أدوات المطوّرين
للمساعدة في الاحتفاظ ببيانات العمل في الملف الشخصي للعمل، لا يمكن لأداة Android Debug Bridge (adb) الوصول إلى الأدلة والملفات في الملف الشخصي للعمل.
إتاحة المزيد من خيارات المقاييس الحيوية
يضيف نظام التشغيل Android 9 تحكّمًا أكثر دقة في المصادقة على الأجهزة بالمقاييس الحيوية في شاشة قفل الملف الشخصي للعمل. استدعِ طريقة
DevicePolicyManager.setKeyguardDisabledFeatures()
الحالية مع KEYGUARD_DISABLE_FACE
وKEYGUARD_DISABLE_IRIS
.
لإيقاف جميع طُرق المصادقة بالمقاييس الحيوية التي يوفّرها الجهاز، أضِف KEYGUARD_DISABLE_BIOMETRICS
.
إيقاف سياسات مشرف الجهاز
يضع نظام التشغيل Android 9 علامة على السياسات الواردة أدناه بأنّها متوقفة نهائيًا لوحدات التحكّم بسياسة الجهاز (DPC) باستخدام مشرف الجهاز. سيستمر عمل السياسات في نظام Android 9 كما كانت في السابق. بدءًا من إصدار Android 10، ستطرح السياسات نفسها استثناء SecurityException عندما يستدعي مشرف الجهاز.
USES_POLICY_DISABLE_CAMERA
USES_POLICY_DISABLE_KEYGUARD_FEATURES
USES_POLICY_EXPIRE_PASSWORD
USES_POLICY_LIMIT_PASSWORD
تستخدم بعض التطبيقات مشرف الجهاز لإدارة أجهزة المستهلك. على سبيل المثال، قفل جهاز مفقود وحجب بياناته. ستظلّ السياسات التالية متاحة لتفعيل هذه الميزة:
لمزيد من المعلومات عن هذه التغييرات، يُرجى الاطّلاع على الإيقاف النهائي لمشرف الجهاز.
التسجيل بسهولة باستخدام رمز الاستجابة السريعة
مكتبة رموز الاستجابة السريعة المضمّنة
يأتي Android 9 مزوّدًا بمكتبة رموز الاستجابة السريعة لتسهيل إدارة حسابات الأجهزة التي تستخدم رمز الاستجابة السريعة. لم يعد على مشرفي تكنولوجيا المعلومات إدخال تفاصيل شبكة Wi-Fi يدويًا لإعداد الجهاز. بدلاً من ذلك، في Android 9، يمكن تضمين تفاصيل شبكة Wi-Fi هذه في رمز الاستجابة السريعة. عندما يمسح مشرف تكنولوجيا المعلومات رمز الاستجابة السريعة ضوئيًا باستخدام جهاز مملوك للشركة، يتصل الجهاز تلقائيًا بشبكة Wi-Fi ويدخل في عملية توفير المتطلبات اللازمة بدون أي إدخال يدوي إضافي.
تتيح طريقة توفير رمز الاستجابة السريعة توفير المتطلبات الإضافية التالية لتحديد تفاصيل شبكة Wi-Fi:
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_WIFI_PASSWORD
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_SSID
تعيين التاريخ والمنطقة الزمنية باستخدام الميزات الإضافية لإدارة الحسابات
تتيح طريقة توفير رمز الاستجابة السريعة توفير المتطلبات الإضافية لضبط الوقت والمنطقة الزمنية على الجهاز:
خيارات مسح البيانات
يمكن لمشرفي الأجهزة عرض رسالة مخصصة للمستخدمين عند إزالة ملف شخصي
للعمل أو مستخدم ثانوي. تساعد هذه الرسالة مستخدمي الأجهزة في معرفة أن مشرف تكنولوجيا المعلومات
أزال الملف الشخصي للعمل أو المستخدم الثانوي. يمكنك الاتصال بالرقم
wipeData(int, CharSequence)
وتقديم
رسالة توضيحية قصيرة. عندما يتصل المستخدم الأساسي أو مالك الجهاز، لا يعرض النظام رسالة ويبدأ في إعادة ضبط الجهاز على الإعدادات الأصلية.
لإزالة بيانات الاشتراك من شريحة SIM المضمّنة في eUICC، يمكنك طلب الرمز
wipeData()
وتضمين WIPE_EUICC
في
الوسيطة flags
.
الطُرق المتاحة لمالكي الملفات التجارية التابعين
تتوفّر الطرق التالية لمالكي الملفات التجارية التابعة:
DevicePolicyManager.setKeyguardDisabled()
DevicePolicyManager.setStatusBarDisabled()
PackageInstaller.createSession()