الميزات الجديدة في Android 8.0

تقدّم هذه الصفحة نظرة عامة على واجهات برمجة التطبيقات الجديدة والتغييرات في الميزات والسلوك التي تم تقديمها في نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) والتي تؤثر في نظام Android في المؤسسة.

واجهات برمجة التطبيقات والميزات الجديدة

لقد جعلنا أوضاع إدارة مالك الملف الشخصي ومالك الجهاز أكثر فعالية وإنتاجية وسهولة في توفير المتطلبات اللازمة أكثر من أي وقت مضى. وقد أتحنا أيضًا سيناريو نشرًا جديدًا تمامًا، وهو الملفات الشخصية للعمل على الأجهزة المُدارة بالكامل. ويتم وصف هذه الميزات وغيرها في الأقسام التالية.

الملفات الشخصية للعمل على الأجهزة المُدارة بالكامل

في نظام التشغيل Android 8.0، يمكن أن تتضمن الأجهزة المُدارة بالكامل ملفات شخصية للعمل أيضًا. يتيح ذلك للمؤسسات فصل التطبيقات والسياسات مع الحفاظ على إمكانية التحكّم وأذونات الوصول في الملفَين الشخصيَّين. يمكن لمالك الجهاز الحالي أو وحدة التحكّم بسياسة الجهاز (DPC) المختلفة إنشاء ملف شخصي مُدار.

باستخدام الملفات الشخصية للعمل على الأجهزة المُدارة بالكامل، يمكن لمالكي الأجهزة إجراء ما يلي:

  • يمكنك إنشاء ملف شخصي مُدار بدون تفاعل المستخدم من خلال الاتصال على EXTRA_PROVISIONING_SKIP_USER_CONSENT.
  • يمكنك تلقّي إشعارات عند إنشاء أو إزالة مستخدمين ثانويين أو ملفات شخصية مُدارة. استدعاءات الاتصال هي onUserAdded() وonUserRemoved().
  • يمكنك منع وحدات التحكّم بسياسة الجهاز الأخرى من إنشاء ملفات شخصية مُدارة باستخدام DISALLOW_ADD_MANAGED_PROFILE. وهذا الإعداد هو الإعداد التلقائي في Android 8.0 لمالكي الأجهزة على الأجهزة التي يتم توفير المتطلبات اللازمة لها حديثًا أو الأجهزة التي تمت ترقيتها إلى Android 8.0.
  • يمكن لمالكي الأجهزة أيضًا منع المستخدمين من إزالة الملفات الشخصية المُدارة الحالية باستخدام DISALLOW_REMOVE_MANAGED_PROFILE.

يمكن لمالكي الأجهزة ومالكي الملفات الشخصية التواصل مع بعضهم إذا كانوا من ملف APK نفسه وكان المالكون تابعون له (راجع انتماء المستخدم أدناه).

للحصول على معلومات أكثر تفصيلاً عن دعم السيناريو الجديد للنشر، راجِع الصفحة المخصّصة للملفات الشخصية للعمل على الأجهزة المُدارة بالكامل.

ارتباط المستخدمين

عندما يمثل مالك الجهاز ومالك الملف الشخصي المؤسسة نفسها:

  • يمكن لمالكي الأجهزة والملفات الشخصية التواصل مع بعضهم بعضًا في ملف APK نفسه، إذ قد يرغبون في مشاركة السياسات أو الحالة (راجِع الملفات الشخصية للعمل على الأجهزة المُدارة بالكامل أعلاه).

  • يمكن أن تنطبق الميزات ��لى مستوى الجهاز، مثل وضع التسجيل أو وضع مهمة القفل في القائمة المسموح بها، على المستخدمين التابعين.

تعمل أرقام تعريف الارتباط المرفقة بملف شخصي أو مستخدم على تحديد المؤسسات. عندما تتطابق معرفات الارتباط، يصبح المستخدمون تابعين. يستخدم مالكو الأجهزة ومالكي الملفات الشخصية setAffiliationIds() لتعيين أرقام تعريف الارتباط. لتمثيل المؤسسات التي تستخدم معرفات سلسلة طويلة ويصعب تخمينها.

أذونات وصول جديدة للمستخدمين التابعين

إذا كان جميع المستخدمين الثانويين والملفات الشخصية على الجهاز تابعين لمالك الجهاز، ستصبح الميزات التالية متاحة:

لم يكن التسجيل الأمني وإعداد تقارير الأخطاء متوفرين إلا للأجهزة الفردية أو للأجهزة التي تحتوي على ملف شخصي واحد ومستخدم واحد فقط.

يتوفر وضع قفل المهمة للمستخدمين الثانويين والملفات الشخصية المُدارة عندما تكون تابعة لمالك الجهاز من خلال setLockTaskPackages(). للمزيد من المعلومات المفصّلة عن ارتباط المستخدمين، يُرجى الاطّلاع على المستخدمون التابعون.

بيانات إخلاء المسؤولية المخصّصة لإدارة الحسابات

يمكن لوحدات التحكّم بسياسة الجهاز الآن عرض بيانات إخلاء المسؤولية الخاصة بهم للمستخدمين أثناء إدارة الحسابات. يمكنك استخدام EXTRA_PROVISIONING_DISCLAIMERS وEXTRA_PROVISIONING_DISCLAIMER_HEADER وEXTRA_PROVISIONING_DISCLAIMER_CONTENT لتوفير بيانات إخلاء مسؤولية نصية ذات نمط معيّن. تظهر بيانات إخلاء المسؤولية المخصّصة لوحدة التحكّم بسياسة الجهاز (DPC) في قائمة البنود القابلة للتصغير.

الأمان

يمكن لمالكي الملفات الشخصية ومالكي الأجهزة استخدام setRequiredStrongAuthTimeout() لضبط فترة مهلة لفتح قفل جهاز أو ملف شخصي باستخدام طريقة مصادقة ثانوية، مثل بصمات الأصابع أو الوكلاء المعتمدين. بعد انتهاء المهلة، على المستخدم فتح قفل الجهاز أو الملف الشخصي باستخدام طريقة مصادقة قوية، مثل كلمة مرور ��و رقم تعريف شخصي أو نقش.

يمكن لمالكي الأجهزة ومالكي الملفات الشخصية إعادة ضبط كلمات المرور على الجهاز والملف الشخصي للعمل بأمان باستخدام resetPasswordWithToken(). بالنسبة إلى الأجهزة التي تتيح التشفير المستند إلى الملفات، تتوفّر واجهة برمجة التطبيقات هذه قبل أن يفتح المستخدم قفل جهازه أو ملفه الشخصي، بشرط أن تكون وحدة التحكّم بسياسة الجهاز (DPC) على دراية بالتشفير.

عند قفل ملف شخصي للعمل على جهاز يتيح التشفير المستند إلى الملفات، يمكن لتطبيق lockNow(int) إزالة مفاتيح التشفير الأساسية لهذا الملف الشخصي للعمل اختياريًا باستخدام FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY. يتم أيضًا إخراج مفاتيح التشفير إذا أوقف المستخدم الملف الشخصي للعمل.

ويمكن أيضًا لمالكي الأجهزة استخدام setNetworkLoggingEnabled() لتفعيل تسجيل الشبكة لطلبات بحث نظام أسماء النطاقات واتصالات بروتوكول التحكم بالنقل التي تبدأ من الأجهزة التي تملكها الشركة. لمزيد من المعلومات، يمكنك الاطّلاع على تسجيل نشاط الشبكة.

يمكن لمالكي الملفات الشخصية تقييد أي من حزم المستخدم الأساسي يمكنها مراقبة إشعارات الملف الشخصي للعمل. يمكنك الاتصال بالرقم setPermittedCrossProfileNotificationListeners() لإعداد الحِزم المُدرَجة في القائمة المسموح بها التي تتلقّى الأحداث من خلال NotificationListenerService. يؤدي ضبط جهات الاستماع المسموح بها على null (الخيار التلقائي) إلى إيقاف الإضافة إلى القائمة المسموح بها، ويمكن لجميع الحِزم رصد الإشعارات. لتقييد الأحداث على حزم النظام، مرر مجموعة فارغة. للاطّلاع على التطبيقات التي لا يمكنها الوصول إلى إشعارات الملف الشخصي للعمل، يمكن للمستخدمين النقر على الإعدادات > التطبيقات والإشعارات > أذونات خاصة للتطبيقات > الوصول إلى الإشعارات.

أخيرًا، يمكن لمالكي الملفات الشخصية ومالكي الأجهزة استرداد معلومات حول تحديثات النظام المعلّقة والمتاحة على أي جهاز باستخدام getPendingSystemUpdate().

تفويض واجهة برمجة التطبيقات لإدارة التطبيقات

إنّ تفويض واجهة برمجة التطبيقات يتيح لمالكي الأجهزة ومالكي الملفات الشخصية إزالة إدارة التطبيقات بشكل كامل من التطبيقات الأخرى. توفّر الفئة DevicePolicyManager طرقًا لإدارة ن��اقات التفويض التي يمكن لمالكي الأجهزة والملفات الشخصية منحها لحزمة:

  • تتيح الطريقة setDelegatedScopes() لمالكي الأجهزة ومالكي الملفات الشخصية منح إمكانية الوصول إلى واجهات برمجة التطبيقات المميزة إلى تطبيقات أخرى.
  • تعرض الطريقة getDelegatedScopes() النطاقات الممنوحة لحزمة ما.
  • تعرض getDelegatePackages() الحزم التي لها نطاق.

يوضّح الجدول التالي كيفية تنظيم الطرق المختلفة في DevicePolicyManager ضمن نطاقات مختلفة:

الجدول 1. التوافق بين النطاقات وطرق سياسة الجهاز

مجموعة الطرق
DELEGATION_CERT_INSTALL
DELEGATION_APP_RESTRICTIONS
DELEGATION_BLOCK_UNINSTALL setUninstallBlocked()
DELEGATION_PERMISSION_GRANT
DELEGATION_PACKAGE_ACCESS
DELEGATION_ENABLE_SYSTEM_APP enableSystemApp()

خدمات لفترة طويلة في الخلفية

يمكن لمالكي الجهاز والملف الشخصي استخدام الفئة الفرعية DeviceAdminService لإنشاء خدمات الخلفية. يحاول نظام Android إبقاء الخدمة قيد التشغيل أثناء عمل المستخدم. إذا كنت تريد تشغيل المهام الدورية، ننصحك باستخدام JobScheduler قبل إنشاء خدمة في الخلفية.

التحكم في خدمة النسخ الاحتياطي

يمكن لمالكي الأجهزة تفعيل خدمة Android Backup Service باستخدام طرق جديدة في DevicePolicyManager. تفعيل وإيقاف خدمة النسخ الاحتياطي باستخدام setBackupServiceEnabled(). تحقَّق من حالة الخدمة الاحتياطية باستخدام isBackupServiceEnabled().

ضبط خادم وكيل Wi-Fi

يمكن لمالكي الأجهزة ومالكي الملفات الشخصية إعداد خوادم وكيل HTTP لشبكات Wi-Fi. يمكنك استخدام ملف PAC أو الإعدادات اليدوية لضبط خادم وكيل لكل شبكة Wi-Fi. لضبط الخادم الوكيل لـ WifiConfiguration أو إزالته، عليك استدعاء طريقة setHttpProxy() الخاصة به. للحصول على إعدادات الخادم الوكيل، اتصل بالرقم getHttpProxy().

مربّعات حوار توضيحية للميزات التي أوقفها المشرف

يجب أن يعرض تطبيقك شرحًا مفيدًا للمستخدمين الذين يحاولون استخدام ميزة أوقفها المشرف. يمكن لجميع التطبيقات الآن استخدام createAdminSupportIntent() لإنشاء هدف يعرض مربّع حوار توضيحي عند تمريره إلى startActivity(Intent). وتتضمّن الأهداف تفسيرات مترجَمة ومخصّصة للكاميرات التي تم إيقافها، ولقطات الشاشة غير المفعَّلة، وجميع القيود المفروضة على UserManager.

حظر الوصول إلى البلوتوث

يمكن لمالكي الأجهزة إيقاف البلوتوث، ما يؤثر في جميع المستخدمين والملفات الشخصية على الجهاز. لإيقاف البلوتوث، أضِف تقييد المستخدم DISALLOW_BLUETOOTH.

يمكن لمالكي الأجهزة ومالكي الملفات الشخصية منع المستخدمين من إرسال الملفات عبر البلوتوث باستخدام DISALLOW_BLUETOOTH_SHARING. لن يتأثر استلام الملفات. عند ضبط السياسة من قِبل مالك الجهاز، يتم تطبيق السمة DISALLOW_BLUETOOTH_SHARING على جميع المستخدمين على الجهاز. هذا الإعداد هو الإعداد التلقائي في Android 8.0 للملفات الشخصية الجديدة والملفات الشخصية الحالية على الأجهزة التي تمت ترقيتها إلى الإصدار Android 8.0.

تغييرات السلوك

إذا كنت تنشئ تطبيقات للأنشطة التجارية، بما في ذلك وحدات التحكّم بسياسة الجهاز (DPC)، عليك مراجعة تغييرات السلوك التالية في الإصدار Android 8.0 وتعديل تطبيقك وفقًا لذلك.

إزالة مستخدمين

يمكن لمالكي الأجهزة إزالة المستخدمين الثانويين والملفات الشخصية المُدارة باستخدام removeUser()، حتى إذا تم تفعيل DISALLOW_REMOVE_USER.

الأمان

المصادقة

تم تطبيق التغييرات التالية على فئة DevicePolicyManager:

  • لا تؤدي طريقة lockNow() إلى قفل الملف الشخصي للعمل إلا إذا كان هناك تحدٍّ منفصل للعمل.
  • لم تعُد الطريقة resetPassword() متاحة لوحدات التحكّم بسياسة الجهاز (DPC) التي تعمل بصفتهم مالكي الأجهزة أو مالكي الملفات الشخصية وتستهدف الإصدار Android 8.0. وفي حال استدعاء الإجراء، يتم طرح استثناء أمان. بدلاً من ذلك، يجب أن تستخدم وحدات التحكّم بسياسة الجهاز resetPasswordWithToken().

    ملاحظة: لن تتأثّر بهذا التغيير وحدات التحكّم بسياسة الجهاز (DPC) التي تستهدف الإصدار 7.1.1 من نظام التشغيل Android (المستوى 25 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، بالإضافة إلى وحدات التحكّم بسياسة الجهاز (DPC) التي تتضمن امتيازات مشرف الجهاز فقط.

  • بالنسبة إلى الأجهزة التي تتيح التشفير المستند إلى الملفات، لا تتوفّر ميزة isActivePasswordSufficient() قبل أن يفتح المستخدم قفل الجهاز لأول مرة بعد إعادة التشغيل. وإذا تم استدعاء هذا الأمر قبل أن يفتح المستخدم قفل الجهاز، يتم طرح استثناء.

البيانات من الملفات الشخصية للعمل المُقفَلة

يتضمّن Android 8.0 تغييرات في واجهة المستخدم لفصل البيانات عن الملف الشخصي للعمل المُقفَل.

  • قد تخفي إشعارات التطبيقات في الملف الشخصي للعمل المحتوى الخاص بها الآن. في السابق، كان درج الإشعارات يعرض محتوى تطبيقات العمل من ملف شخصي للعمل مُقفَل.
  • تعرض شاشة الأخيرة الآن لوحة عادية لتشغيل التطبيقات من ملف شخصي للعمل مُقفَل. تحتوي اللوحة العادية بالألوان على أيقونة التطبيق واسمه. في السابق، كانت الأنشطة أو المهام من ملف شخصي للعمل مُقفَلًا تعرض معاينة في شاشة "العناصر الأخيرة".

سلامة الجهاز

  • أصبحت علامة ENSURE_VERIFY_APPS الآن قيدًا عالميًا لمستخدمي الحساب. وفي حال فرض هذا القيد على أي مستخدم على الجهاز، يتم فرض التحقق من التطبيقات على جميع المستخدمين على الجهاز. على سبيل المثال، في حال فرض مالك الملف الشخصي قيودًا على الملف الشخصي للعمل، سيتم فرض التحقق من التطبيقات على الملف الشخصي للمستخدم.
  • تم استدعاء الإجراء onSystemUpdatePending() الآن لمالكي الملفات الشخصية بالإضافة إلى مالكي الأجهزة.
  • عند استخدام فئة SystemUpdatePolicy، لا تنطبق سياسة التأجيل بعد الآن على رموز تصحيح الأمان، لذلك لم يعد من الممكن تأجيل رموز تصحيح الأمان. ومع ��لك، لا يؤثر ذلك في سلوك أنواع السياسات الأخرى، مثل السياسات التلقائية والسياسات التي تتم من خلال النوافذ.
  • بإمكان مالكي الأجهزة تفعيل ميزة إعادة الضبط على الإعدادات الأصلية باستخدام wipeData()، حتى إذا تم تفعيل DISALLOW_FACTORY_RESET.

شبكة VPN قيد التشغيل دائمًا

يتضمن Android 8.0 تغييرات على واجهة المستخدم لمساعدة المستخدمين في فهم حالة اتصالات الشبكة الافتراضية الخاصة (VPN) التي يتم تشغيلها دائمًا:

  • عندما ينقطع الاتصال بشبكات VPN قيد التشغيل دائمًا أو يتعذّر الاتصال بها، يظهر للمستخدمين إشعار لا يمكن إغلاقه. يؤدي النقر على الإشعار إلى عرض إعدادات ضبط الشبكة الافتراضية الخاصة. يختفي الإشعار عند إعادة الاتصال بشبكة VPN أو عندما يوقف المستخدم خيار تشغيل شبكة VPN بشكل دائم.
  • تسمح شبكة VPN التي يتم تشغيلها دائمًا للشخص الذي يستخدم أي جهاز بحظر أي اتصالات بالشبكة لا تستخدم شبكة VPN. عند تفعيل هذا الخيار، يحذّر تطبيق "الإعدادات" المستخدم من عدم توفّر اتصال بالإنترنت إلى أن يتم الاتصال بشبكة VPN. تطلب الإعدادات من المستخدم المتابعة أو الإلغاء.

يجب أن يستدعي VpnService في تطبيقات شبكة VPN الآن طريقة startForeground() بعد الإطلاق. بما أنّ نظام Android يبدأ خدمة تطبيق شبكة VPN مباشرةً، يتحمل التطبيق مسؤولية الانتقال إلى المقدّمة. يوقف Android 8.0 تطبيقات VPN التي لا تنقل خدمة شبكة VPN إلى المقدّمة.

عمليات معاودة الاتصال بكلمة المرور

تشمل استدعاءات تغيير كلمة المرور في DeviceAdminReceiver الآن المعلمة user لتحديد المستخدم أو الملف الشخصي الذي تنتمي إليه كلمة المرور. توقيعات الطريقة الجديدة هي:

يستدعي التنفيذ الافتراضي لكل طريقة جديدة الإصدار السابق - مما يؤدي إلى إسقاط وسيطة المستخدم. سيوقف Android 8.0 الطرق السابقة.

تفويض واجهة برمجة التطبيقات لإدارة التطبيقات

تم إيقاف الطرق التالية في الفئة DevicePolicyManager نهائيًا:

أصبح من الممكن الآن أيضًا تفويض نطاق واحد إلى حزم متعددة. بمعنى آخر، يمكن لمالكي الأجهزة ومالكي الملفات الشخصية منح حزمتين مختلفتين من الوصول إلى مجموعة واجهات برمجة التطبيقات نفسها في الوقت نفسه.