بالإضافة إلى الميزات والإمكانات الجديدة، يتضمّن الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) مجموعة متنوعة من تغييرات النظام وتغييرات سلوك واجهة برمجة التطبيقات. يسلط هذا المستند الضوء على بعض التغييرات الرئيسية التي يجب أن تفهمها وتأخذها في الاعتبار في تطبيقاتك.
إذا سبق لك نشر تطبيق لنظام Android، يُرجى العلم بأنّ هذه التغييرات في النظام الأساسي في تطبيقك.
أذونات وقت التشغيل
يقدّم هذا الإصدار نموذجًا جديدًا للأذونات، حيث يمكن للمستخدمين الآن إدارة الأذونات مباشرةً. أذونات التطبيقات في وقت التشغيل. يمنح هذا النموذج المستخدمين إمكانية رؤية محسّنة والتحكم في مع تبسيط عمليات التثبيت والتحديث التلقائي لمطوّري التطبيقات. يمكن للمستخدمين منح الأذونات أو إبطالها بشكل فردي للتطبيقات المثبّتة.
احرص على التحقّق مما إذا كانت التطبيقات تستهدف الإصدار 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث من نظام التشغيل Android وطلب
الأذونات في وقت التشغيل. لمعرفة ما إذا تم منح تطبيقك الإذن، يمكنك الاتصال بـ
checkSelfPermission()
جديد
. لطلب إذن، اتصل بالجهة الجديدة
requestPermissions()
. حتى إذا لم يكن تطبيقك يستهدف الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات)، يجب اختباره ضمن
نموذج الأذونات الجديد.
للحصول على تفاصيل حول إتاحة نموذج الأذونات الجديد في تطبيقك، يُرجى الاطّلاع على استخدام أذونات النظام للحصول على نصائح حول كيفية تقييم تأثير على تطبيقك راجِع ملاحظات استخدام الأذونات.
القيلولة وتطبيقات وضع الاستعداد
يقدِّم هذا الإصدار تحسينات جديدة لتوفير الطاقة للأجهزة والتطبيقات الخاملة. هذه التي تؤثر في جميع التطبيقات، لذا تأكد من اختبار تطبيقاتك في هذه الأوضاع الجديدة.
- القيلولة: إذا فصل المستخدم جهازًا وتركه ثابتًا مع إطفاء شاشته، ينتقل الجهاز لفترة زمنية معيّنة إلى وضع القيلولة حيث يحاول الحفاظ على النظام. في حالة نوم. في هذا الوضع، تستأنف الأجهزة عملياتها بشكل دوري كالمعتاد لفترات قصيرة من حتى يمكن أن تحدث مزامنة التطبيقات ويتمكن النظام من تنفيذ أي عمليات معلّقة.
- وضع الاستعداد للتطبيقات: يسمح وضع استعداد التطبيقات للنظام بتحديد ما إذا كان التطبيق غير نشِط لفترة قصيرة. عندما لا يستخدمه المستخدم بشكل نشط. ويحدد النظام هذا عندما لا المس التطبيق لفترة زمنية معينة. في حال فصل الجهاز عن مصدر الطاقة، يوقِف النظام الشبكة. الوصول إلى المزامنات والوظائف للتطبيقات التي تعتبرها غير نشطة وتعليقها.
لمزيد من المعلومات عن هذه التغييرات الموفرة للطاقة، يُرجى الاطّلاع على التحسين لزيادة القيلولة وتطبيقات وضع الاستعداد:
إزالة عميل Apache HTTP
يزيل إصدار Android 6.0 دعم عميل Apache HTTP. إذا كان تطبيقك يستخدم هذا البرنامج
تستهدف الإصدار 2.3 من نظام التشغيل Android (المستوى 9 من واجهة برمجة التطبيقات) أو إصدارًا أحدث، استخدِم الفئة HttpURLConnection
.
بدلاً من ذلك. إنّ واجهة برمجة التطبيقات هذه أكثر كفاءة لأنّها تقلّل من استخدام الشبكة من خلال الضغط الشفاف.
والتخزين المؤقت للاستجابة، ويقلل من استهلاك الطاقة. لمتابعة استخدام واجهات برمجة تطبيقات Apache HTTP، يجب عليك
يجب أن تعلن أولاً عن التبعية التالية لوقت التجميع في ملف build.gradle
:
android { useLibrary 'org.apache.http.legacy' }
BuringSSL
ينتقل Android من OpenSSL إلى
BoringSSL (طبقة المقابس الآمنة)
المكتبة. إذا كنت تستخدم Android NDK في تطبيقك، يجب عدم الربط بمكتبات التشفير
التي لا تشكّل جزءًا من واجهة برمجة تطبيقات NDK، مثل libcrypto.so
وlibssl.so
. هذه
والمكتبات ليست واجهات برمجة تطبيقات عامة، وقد تتغير أو تتوقف بدون إشعار عبر الإصدارات والأجهزة.
بالإضافة إلى ذلك، قد تتعرض نفسك لثغرات أمنية. بدلاً من ذلك، عدِّل
رمز أصلي لاستدعاء واجهات برمجة تطبيقات تشفير Java عبر JNI أو للربط بشكلٍ ثابت
مكتبة تشفير من اختيارك.
إذن الوصول إلى معرِّف الأجهزة
لتوفير حماية أكبر للبيانات للمستخدمين، بدءًا من هذا الإصدار،
إزالة إمكانية الوصول الآلي إلى معرّف الجهاز المحلي للجهاز
التطبيقات التي تستخدم واجهات برمجة تطبيقات البلوتوث وWi-Fi. تشير رسالة الأشكال البيانية
WifiInfo.getMacAddress()
و
BluetoothAdapter.getAddress()
طريقة
الآن يكون ناتجها قيمة ثابتة 02:00:00:00:00:00
.
للوصول إلى معرّفات الأجهزة الخاصة بالأجهزة الخارجية المجاورة من خلال عمليات البحث عن البلوتوث وشبكة Wi-Fi،
يجب أن يحتوي تطبيقك الآن على ACCESS_FINE_LOCATION
أو
أذونات ACCESS_COARSE_LOCATION
:
ملاحظة: عندما يبدأ جهاز يعمل بالإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) البحث عن شبكات Wi-Fi أو بلوتوث في الخلفية، تكون العملية مرئية للأجهزة الخارجية ينشأ من عنوان MAC عشوائي.
الإشعارات
في هذا الإصدار، ستتم إزالة طريقة Notification.setLatestEventInfo()
. يمكنك استخدام
صف واحد (Notification.Builder
) بدلاً من ذلك لإنشاء إشعارات. لتحديث
بشكل متكرر، إعادة استخدام المثيل Notification.Builder
. عليك استدعاء
طريقة واحدة (build()
) للحصول على
تم تعديل مثيلَين (Notification
).
لن يطبع الأمر adb shell dumpsys notification
نص الإشعار بعد ذلك.
استخدِم الأمر adb shell dumpsys notification --noredact
بدلاً من ذلك لطباعة النص
في كائن إشعار.
التغييرات في "مدير الصوت"
ضبط مستوى الصوت مباشرةً أو كتم صوت أحداث بث محدّدة عبر AudioManager
لم تعد الفئة متاحة. تم إيقاف طريقة setStreamSolo()
نهائيًا، وعليك استدعاء الدالة
requestAudioFocus()
بدلاً من ذلك. وبالمثل، فإن
طريقة setStreamMute()
هي
متوقّف نهائيًا بدلاً من ذلك، عليك استدعاء الطريقة adjustStreamVolume()
وتمرير قيمة الاتجاه
ADJUST_MUTE
أو
ADJUST_UNMUTE
تحديد النص
![شاشة تعرض ميزات تحديد النص الجديدة داخل شريط أدوات عائم](https://developer.android.google.cn/static/images/android-6.0/text-selection.gif?authuser=19&hl=ar)
عندما يختار المستخدمون نصًا في تطبيقك، يمكنك الآن عرض إجراءات اختيار النص، مثل يمكنك القص والنسخ واللصق في شريط الأدوات العائم. يتشابه تنفيذ تفاعل المستخدم لذلك لشريط الإجراءات السياقية، كما هو موضح في تفعيل وضع الإجراء المستند إلى السياق للمشاهدات الفردية
لتنفيذ شريط أدوات عائم لتحديد النص، عليك إجراء التغييرات التالية في التطبيقات:
- في العنصر
View
أوActivity
، غيِّر مكالمتان (ActionMode
) منstartActionMode(Callback)
إلىstartActionMode(Callback, ActionMode.TYPE_FLOATING)
. - استخدام آلية تنفيذ
ActionMode.Callback
الحالية وتمديدهاActionMode.Callback2
بدلاً من ذلك. - إلغاء
onGetContentRect()
لتوفير إحداثيات محتوى كائنRect
(مثل مستطيل تحديد النص) في طريقة العرض. - إذا لم يعد تحديد موضع المستطيل صالحًا، وهذا هو العنصر الوحيد الذي سيتم إلغاء صلاحيته،
لاستدعاء طريقة
invalidateContentRect()
.
في حال استخدام
الإصدار 22.2 من مكتبة دعم Android، عليك الانتباه إلى أن أشرطة الأدوات العائمة
متوافق مع الأنظمة القديمة ويتحكم appcompat في ActionMode
كائنات من خلال
الافتراضي. يمنع هذا الإجراء عرض أشرطة الأدوات العائمة. للتفعيل
دعم ActionMode
في
AppCompatActivity
، مكالمة
getDelegate()
، ثم الاتصال
setHandleNativeActionModesEnabled()
على شاشة الجهاز التي تم إرجاعها
كائن AppCompatDelegate
وتعيين الإدخال
إلى false
. يعيد هذا الاستدعاء التحكّم في ActionMode
عناصر إلى
إطار العمل. في الأجهزة التي تعمل بنظام التشغيل Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات)، يتيح لإطار العمل التوافق مع
ActionBar
أو أوضاع شريط الأدوات العائم أثناء تشغيل الأجهزة
في Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم، لا يمكن استخدام سوى أوضاع ActionBar
تغييرات الإشارات المرجعية للمتصفّح
لن يعود هذا الإصدار متوافقًا مع الإشارات المرجعية العامة. تشير رسالة الأشكال البيانية
android.provider.Browser.getAllBookmarks()
وandroid.provider.Browser.saveBookmark()
تتم الآن إزالة الطرق. وبالمثل، فإنّ READ_HISTORY_BOOKMARKS
وWRITE_HISTORY_BOOKMARKS
إزالة الأذونات. إذا كان تطبيقك يستهدف الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) أو إصدارًا أحدث، لا يُسمح بالوصول إلى
إشارات مرجعية من الموفر العام أو استخدام أذونات الإشارات المرجعية. بدلاً من ذلك، يجب أن يخزّن
يضع إشارات مرجعية على البيانات داخليًا.
التغييرات في ملف تخزين مفاتيح Android
مع هذا الإصدار، لم يعُد مزوّد ملف تخزين مفاتيح Android متوافقًا قانون الخدمات الرقمية (DSA). وما زال خيار ECDSA متاحًا.
لن يتم حذف المفاتيح التي لا تتطلب تشفيرًا في حال عدم النشاط عند استخدام شاشة القفل الآمنة تم إيقافه أو إعادة ضبطه (على سبيل المثال، من قِبل المستخدم أو أحد مشرفي الجهاز). المفاتيح التي تتطلب في حالة عدم النشاط خلال هذه الأحداث.
التغييرات المتعلقة بشبكة Wi-Fi والشبكات
يقدم هذا الإصدار التغييرات التالية في السلوك على واجهات برمجة تطبيقات Wi-Fi والشبكات.
- يمكن لتطبيقاتك الآن تغيير حالة عناصر
WifiConfiguration
فقط إذا كنت قد أنشأت هذه الكائنات لا يحق لك التعديل أو الحذفWifiConfiguration
عناصر أنشأها المستخدم أو من خلال تطبيقات أخرى -
في السابق، عندما فرض أحد التطبيقات على الجهاز الاتصال بشبكة Wi-Fi معينة باستخدام
enableNetwork()
معdisableAllOthers=true
: تم قطع اتصال الجهاز بشبكات أخرى مثل البيانات الخلوية. في هذا الإصدار، لم يعُد الجهاز ينقطع الاتصال بمثل هذه الشبكات الأخرى. في حال حذف قيمةtargetSdkVersion
في تطبيقك تبلغ“20”
أو أقل، وقد تم تثبيته في المكان المحدّد. شبكة Wi-Fi. إذا كانت قيمة "targetSdkVersion
" في تطبيقك هي“21”
أو أعلى، استخدِم متعددة الشبكات (مثلopenConnection()
,bindSocket()
، ويتيح لك الإصدار الجديدbindProcessToNetwork()
) لضمان إرسال حركة بيانات الشبكة على الشبكة المحددة.
التغييرات في خدمة الكاميرا
في هذا الإصدار، تم تغيير نموذج الوصول إلى الموارد المشتركة في خدمة الكاميرا. بدءًا من نموذج الوصول السابق الذي يأتي على أولوية تفضيل العمليات. تشمل التغييرات التي يتم إجراؤها على سلوك الخدمة ما يلي:
- يُعد الوصول إلى موارد النظام الفرعي للكاميرا، بما في ذلك فتح جهاز الكاميرا وتهيئته، يتم منحها استنادًا إلى "أولوية" عملية تقديم طلب العميل. تتضمن عمليات تقديم الطلبات وتحظى الأنشطة المرئية للمستخدم أو التي تعمل في المقدّمة أولوية أعلى بشكل عام، ما يجعل مصدر الكاميرا الاكتساب والاستخدام بشكل أكثر موثوقية.
- قد يتم "تجاهل" برامج الكاميرا النشطة للتطبيقات ذات الأولوية المنخفضة.
محاولة التطبيق استخدام الكاميرا. في واجهة برمجة تطبيقات
Camera
المتوقّفة نهائيًا، ينتج عنها يجري احتسابonError()
استدعاء العميل الذي تم طرده. وينتج عن ذلك في واجهة برمجة تطبيقاتCamera2
onDisconnected()
يتم استدعاء العميل الذي تم طرده. - في الأجهزة التي تتضمن معدّات كاميرا مناسبة، يمكن تنفيذ عمليات تطبيق منفصلة الفتح بشكل مستقل واستخدام أجهزة كاميرا منفصلة في الوقت نفسه ومع ذلك، فإن استخدام عمليات متعددة حيث يتسبب الوصول المتزامن في تدهور أداء أو إمكانات يتم الآن اكتشاف أي من أجهزة الكاميرا المفتوحة ومنعها من خلال خدمة الكاميرا. هذا التغيير قد ينتج عنها "عمليات إزالة" للعملاء ذوي الأولوية المنخفضة حتى في حالة عدم وجود أي تطبيق آخر تحاول الوصول إلى جهاز الكاميرا نفسه.
- يؤدي تغيير المستخدم الحالي إلى تفعيل برامج الكاميرا النشطة في التطبيقات التي يملكها حساب المستخدم السابق. التخلص منها. يقتصر الوصول إلى الكاميرا على الملفات الشخصية للمستخدمين التي يملكها مستخدم الجهاز الحالي. ومن الناحية العملية، يعني هذا، على سبيل المثال، عدم إمكانية ترك حساب "الضيف" قيد التشغيل. العمليات التي تستخدم النظام الفرعي للكاميرا عندما ينتقل المستخدم إلى حساب مختلف.
وقت التشغيل
يُنفِّذ وقت تشغيل ART الآن قواعد الوصول إلى وحدة المعالجة بشكل صحيح
طريقة newInstance()
. هذا النمط
تغيير إصلاح المشكلة المتمثلة في أن دالفيك كان يتحقق من قواعد الوصول بشكل غير صحيح في الإصدارات السابقة.
إذا كان تطبيقك يستخدم
طريقة واحدة (newInstance()
) وأنت
تريد إلغاء عمليات التحقق من الوصول، فيمكنك طلب
طريقة setAccessible()
مع الإدخال
تم تعيين المعلمة إلى true
. إذا كان تطبيقك يستخدم
الإصدار 7 من مكتبة التطبيقات أو
ومكتبة إعادة التدوير الإصدار 7،
يجب تحديث تطبيقك من أجل استخدامه إلى أحدث إصدارات هذه المكتبات. بخلاف ذلك، تأكد من
يتم تحديث أي فئات مخصصة مُشار إليها من XML بحيث يمكن الوصول إلى دوال إنشاء الفئات الخاصة بها.
هذا الإصدار يعدِّل سلوك الرابط الديناميكي. يفهم الرابط الديناميكي الآن
الفرق بين soname
للمكتبة ومسارها
(
الخطأ العام 6670)، والبحث باستخدام soname
أصبح الآن
تنفيذها. التطبيقات التي عملت سابقًا وتحتوي على إدخالات DT_NEEDED
سيئة
(عادةً ما تكون المسارات المطلقة على نظام ملفات جهاز الإصدار) عند التحميل.
تم تنفيذ العلامة dlopen(3) RTLD_LOCAL
بشكل صحيح الآن. لاحظ أن
وRTLD_LOCAL
هو الإعداد التلقائي، لذا فإنّ المكالمات إلى dlopen(3)
التي لم يتم استخدامها بشكلٍ صريح
سيتأثر RTLD_LOCAL
(ما لم يستخدم تطبيقك RTLD_GLOBAL
بشكل صريح). مع
RTLD_LOCAL
، لن تتم إتاحة الرموز للمكتبات التي تم تحميلها من خلال عمليات الاستدعاء اللاحقة إلى
dlopen(3)
(بدلاً من أن تتم الإشارة إليها من خلال إدخال DT_NEEDED
).
في الإصدارات السابقة من Android، إذا طلب التطبيق من النظام تحميل مكتبة مشتركة باستخدام
عمليات تغيير موقع النص، عرض النظام تحذيرًا ولكن ما زال يسمح بتحميل المكتبة.
بدءًا من هذا الإصدار، يرفض النظام هذه المكتبة إذا كان الإصدار 23 من حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك هو
أو أعلى. لمساعدتك في اكتشاف ما إذا تعذَّر تحميل مكتبة ما، يجب أن يسجّل التطبيق
أخطاء dlopen(3)
، وتضمين نص وصف المشكلة الذي يشير إليه dlerror(3)
تكرار المكالمات. لمعرفة المزيد من المعلومات عن التعامل مع عمليات نقل النص، اطّلِع على
التحقق من صحة APK
تُجري المنصة الآن عمليات تحقّق أكثر صرامة من حِزم APK. تُعتبر حزمة APK تالفة إذا كان الملف تم تعريفها في ملف البيان ولكنها غير متوفرة في حزمة APK نفسها. يجب إعادة توقيع حزمة APK في حالة ستتم إزالة المحتوى.
اتصال USB
وفقًا للإعدادات التلقائية، يتم الآن ضبط اتصالات الأجهزة عبر منفذ USB على وضع الشحن فقط. للوصول إلى: الجهاز ومحتواه عبر اتصال USB، فيجب على المستخدمين منح الإذن صراحةً والتفاعلات. إذا كان تطبيقك يتيح تفاعل المستخدم مع الجهاز عبر منفذ USB، يُرجى مراعاة ضرورة تفعيل التفاعل بشكل صريح.
تغييرات Android for Work
يتضمن هذا الإصدار التغييرات التالية في سلوك Android for Work:
- جهات اتصال العمل في السياقات الشخصية: Google Dialer
يعرض سجلّ المكالمات الآن جهات اتصال العمل عندما يشاهد المستخدم المكالمات السابقة.
الإعداد
setCrossProfileCallerIdDisabled()
إلىtrue
، يخفي جهات اتصال ملف العمل في سجل مكالمات Google Dialer. يمكن أن تكون جهات اتصال العمل يتم عرضه مع جهات الاتصال الشخصية للأجهزة عبر البلوتوث فقط إذا لقد ضبطتsetBluetoothContactSharingDisabled()
علىfalse
. ويتم ضبطها تلقائيًا علىtrue
. - إزالة إعدادات Wi-Fi: إعدادات Wi-Fi التي أضافها مالك الملف الشخصي
(على سبيل المثال، من خلال طلبات
addNetwork()
) تتم إزالتها الآن في حال حذف ملف العمل. - إلغاء تأمين إعدادات Wi-Fi: أي عملية ضبط لشبكة Wi-Fi تم إنشاؤها من خلال
لا يمكن للمستخدم تعديل أو حذف مالك جهاز نشط إذا
قيمة
WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN
ليست صفرية. وسيظل بإمكان المستخدم إنشاء إعدادات Wi-Fi الخاصة به وتعديلها. جهاز نشط يمتلك المالكون امتياز تعديل أي إعدادات لشبكات Wi-Fi أو إزالتها، بما في ذلك وتلك التي لم ينشئها. - تنزيل وحدة التحكم بسياسة الجهاز من خلال إضافة حساب Google: عندما تصدر Google إضافة حساب يتطلب إدارة من خلال تطبيق وحدة التحكّم بسياسة الجهاز (DPC) إلى أحد الأجهزة خارج السياق المُدار، يطلب الآن مسار إضافة الحساب من المستخدم تثبيت WPC المناسب. ينطبق هذا السلوك أيضًا على الحسابات التي تمت إضافتها عبر الإعدادات > الحسابات وفي معالج إعداد الجهاز الأولي.
- تغييرات في سلوكيات معيّنة لواجهة برمجة التطبيقات
DevicePolicyManager
:- سيؤدي استدعاء
setCameraDisabled()
تؤثر في الكاميرا للمستخدم المتصل فقط يتعذّر الاتصال به من الملف الشخصي المُدار تؤثر في تطبيقات الكاميرا التي تعمل على حساب المستخدم الأساسي - بالإضافة إلى ذلك،
setKeyguardDisabledFeatures()
متاحة الآن لمالكي الملفات الشخصية، وكذلك لمالكي الأجهزة. - يمكن لمالك الملف الشخصي ضبط قيود قفل المفاتيح التالية:
KEYGUARD_DISABLE_TRUST_AGENTS
وKEYGUARD_DISABLE_FINGERPRINT
، والتي تؤثر في إعدادات قفل المفاتيح للمستخدم الرئيسي للملف الشخصي.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS
، الذي يؤثر فقط في الإشعارات التي تنشئها التطبيقات في الملف الشخصي المُدار.
- تم إيقاف الطريقتَين
DevicePolicyManager.createAndInitializeUser()
وDevicePolicyManager.createUser()
نهائيًا. setScreenCaptureDisabled()
الآن أيضًا تحظر بنية النقرة أو مرة الظهور الداعمة عندما يكون تطبيق للمستخدم المحدد في المقدّمة.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
القيمة الافتراضية الآن لخوارزمية SHA-256. لا تزال خوارزمية SHA-1 متوافقة مع الأنظمة القديمة، ولكن ستتم إزالتها. في المستقبل.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
والآن تقبل خوارزمية SHA-256 فقط.- تمت الآن إزالة واجهات برمجة تطبيقات أداة إعداد الجهاز التي كانت متوفّرة في الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات).
- تمت إزالة
EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS
حتى يحدث اصطدام الاتصال القصير المدى (NFC) لا يمكن لتوفير المتطلبات اللازمة فتح قفل جهاز محمي تمت إعادة ضبطه على الإعدادات الأصلية آليًا. - يمكنك الآن استخدام بطاقة
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
. إضافية لتمرير البيانات إلى تطبيق مالك الجهاز أثناء توفير NFC للجهاز المُدار. - تم تحسين واجهات برمجة تطبيقات Android for Work لأذونات وقت تشغيل M، بما في ذلك ملفات العمل،
وطبقة المساعدة وغيرها. ما من أذونات جديد في واجهات برمجة التطبيقات لأذونات "
DevicePolicyManager
" تؤثر على تطبيقات ما قبل M. - عند خروج المستخدمين من الجزء المتزامن من تدفق الإعداد الذي يتم بدؤه من خلال
ACTION_PROVISION_MANAGED_PROFILE
أوACTION_PROVISION_MANAGED_DEVICE
intent، النظام الآن رمز نتيجةRESULT_CANCELED
.
- سيؤدي استدعاء
- التغييرات على واجهات برمجة التطبيقات الأخرى:
- استخدام البيانات: تمت إعادة تسمية الصف
android.app.usage.NetworkUsageStats
NetworkStats
- استخدام البيانات: تمت إعادة تسمية الصف
- التغييرات على الإعدادات العامة:
- لم يعُد من الممكن ضبط هذه الإعدادات عبر
setGlobalSettings()
:BLUETOOTH_ON
DEVELOPMENT_SETTINGS_ENABLED
MODE_RINGER
NETWORK_PREFERENCE
WIFI_ON
- يمكن الآن ضبط هذه الإعدادات العامة عبر
setGlobalSettings()
:
- لم يعُد من الممكن ضبط هذه الإعدادات عبر