تغييرات إطار عمل التوافق (Android 11)

تصف هذه الصفحة كل تغيير في السلوك يؤثر في التطبيق وتمت إضافته إلى إطار التوافق في Android 11 (مستوى واجهة برمجة التطبيقات 30). يمكنك استخدام هذه القائمة بالاقتران مع خيارات المطوّر وأوامر ADB لاختبار تطبيقك وتصحيح الأخطاء فيه أثناء إعداده لاستهداف Android 11.

ADD_CONTENT_OBSERVER_FLAGS

رقم تعريف التغيير: 150939131

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، هناك عملية تحميل زائد جديدة لواجهة برمجة التطبيقات العامة onChange(boolean, Uri, int) تتضمّن وسيطة عدد صحيح flags.

هذه الطريقة الجديدة هي بديل لحزمة تطوير البرامج (SDK) العامة للتطبيقات التي تستخدم الطريقة المحمّلة الزائدة onChange() غير المتوفّرة في حزمة تطوير البرامج (SDK) والتي تتضمّن وسيطة عدد صحيح userId.

ADMIN_APP_PASSWORD_COMPLEXITY

رقم تعريف التغيير: 123562444

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى تطبيقات المشرفين التي تستهدف Android 11، يتم طرح خطأ عندما يضبط أحد التطبيقات شرطًا لكلمة المرور غير ذي صلة بجودة كلمة المرور المعيّنة حاليًا. على سبيل المثال، عندما يتم ضبط جودة كلمة المرور على DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED، لن يتمكّن التطبيق من ضبط الحد الأدنى لطول كلمة المرور. في هذه الحالة، قبل محاولة ضبط الحد الأدنى لطول كلمة المرور، يجب أن يستدعي التطبيق أولاً الطريقة setPasswordQuality() ثم يستدعي الطريقة setPasswordMinimumLength() فقط.

بالإضافة إلى ذلك، عندما يخفّض تطبيق مشرف يستهدف Android 11 جودة كلمة المرور، تتم إعادة ضبط أي متطلبات حالية لكلمة المرور لم تعُد منطبقة على قيمها التلقائية.

APP_DATA_DIRECTORY_ISOLATION

رقم تعريف التغيير: 143937733

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

لم يعُد بإمكان التطبيقات التي تستهدف Android 11 الوصول إلى الملفات في أدلة البيانات الخاصة بأي تطبيق، بغض النظر عن إصدار حزمة تطوير البرامج (SDK) المستهدَف للتطبيق الآخر.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة الوصول إلى الأدلة الخاصة.

APN_READING_PERMISSION_CHANGE_ID

رقم تعريف التغيير: 124107808

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، يتطلّب الوصول إلى قاعدة بيانات APN الآن الإذن Manifest.permission.WRITE_APN_SETTINGS.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة قراءة قاعدة بيانات APN بشكل مقيّد.

BACKGROUND_RATIONALE_CHANGE_ID

رقم تعريف التغيير: 147316723

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

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

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على دليل الوصول إلى الموقع الجغرافي في الخلفية في Android 11 الذي يناقش تغييرات الخصوصية المتعلقة بالموقع الجغرافي في Android 11.

CALLBACK_ON_CLEAR_CHANGE

رقم تعريف التغيير: 119147584

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

عند استدعاء Editor.clear ، يتم الآن استدعاء OnSharedPreferenceChangeListener.onSharedPreferenceChanged باستخدام مفتاح null.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة تغييرات عمليات معاودة الاتصال في OnSharedPreferenceChangeListener.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

رقم تعريف التغيير: 130595455

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

تم الآن توسيع رموز الخطأ في updateAvailableNetworks(List, Executor, Consumer) وsetPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer).

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

رقم تعريف التغيير: 148180766

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

هذا تغيير طفيف في سلوك startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). قبل هذا التغيير، كان النظام يستدعي العملية التي تم التبديل إليها. وبعد التغيير، سيستدعي النظام العملية المطلوبة فعليًا أو جميع العمليات التي تم التبديل إليها إذا لم يتم تحديد أي عملية.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

رقم تعريف التغيير: 136219221

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، لا تتلقّى الخدمات التي تعمل في المقدّمة إمكانات الكاميرا والميكروفون أثناء الاستخدام إلا عندما يتم ضبط R.attr.foregroundServiceType على ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA و ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE على التوالي في ملف البيان. في الإصدارات السابقة من Android، كانت الخدمات التي تعمل في المقدّمة تتلقّى تلقائيًا إمكانات الكاميرا والميكروفون.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة أنواع الخدمات التي تعمل في المقدّمة في Android 11.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

رقم تعريف التغيير: 128611929

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

لم يعُد بإمكان التطبيقات نشر إشعارات مخصّصة في الخلفية. ومع ذلك، لا يزال بإمكان التطبيقات نشر الإشعارات باستخدام الطريقة Toast.makeText(Context, CharSequence, int)وأشكالها المختلفة أثناء عملها في الخلفية.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة حظر طرق عرض الإشعارات المخصّصة.

CHANGE_RESTRICT_SAW_INTENT

رقم تعريف التغيير: 135920175

الحالة التلقائية: لا يمكن تبديل هذا التغيير. لا يسجّله إلا إطار التوافق.

لم تعُد النوايا التي تستخدم الإجراء android.settings.MANAGE_APP_OVERLAY_PERMISSION ومخطط معرّف الموارد المنتظم (URI) للبيانات package توجّه المستخدم إلى شاشة خاصة بالتطبيق لإدارة الإذن المرتبط. بدلاً من ذلك، يتم توجيه المستخدم إلى شاشة يمكنه فيها إدارة جميع التطبيقات التي طلبت الإذن.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

رقم تعريف التغيير: 147798919

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

تعرض الآن واجهة مستخدم النظام (SystemUI) الإشعارات المنبثقة بدلاً من عرضها داخل التطبيق. ويمنع ذلك التطبيقات من التحايل على القيود المفروضة على نشر الإشعارات المنبثقة المخصّصة في الخلفية.

DEFAULT_SCOPED_STORAGE

رقم تعريف التغيير: 149924527

الحالة التلقائية: مفعَّلة لجميع التطبيقات.

تستخدم جميع التطبيقات التي تستهدف Android 11 الآن ميزة "التخزين الفرعي" تلقائيًا ولم يعُد بإمكانها إيقافها.

ومع ذلك، يمكنك اختبار تطبيقك بدون ميزة "التخزين الفرعي"، بغض النظر عن إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك وقيم علامات البيان، من خلال إيقاف هذا التغيير.

لمزيد من المعلومات حول التغييرات التي تم إجراؤها على ميزة "التخزين الفرعي" في Android 11، يُرجى الاطّلاع على قسم التخزين الفرعي في الصفحة التي تتناول التغييرات التي تم إجراؤها على مساحة التخزين في Android 11.

EMPTY_INTENT_ACTION_CATEGORY

رقم تعريف التغيير: 151163173

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، يعرض النظام الآن خطأ إذا كان action أو category في فلتر النية عبارة عن سلسلة فارغة. كان هناك خطأ في النظام الأساسي قبل Android 11 يسمح بمرور هذه الحالة بدون عرض خطأ. يُرجى العِلم أنّ ذلك لا يشمل الحالات التي تكون فيها السمة خالية أو غير متوفّرة، لأنّ ذلك كان يعرض دائمًا خطأ.

FILTER_APPLICATION_QUERY

رقم تعريف التغيير: 135549675

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

يجب أن تعلن التطبيقات الآن عن الحِزم والنوايا التي تنوي استخدامها قبل أن تتمكّن من الحصول على تفاصيل حول التطبيقات الأخرى على الجهاز. يجب إجراء هذه الإعلانات باستخدام العلامة <queries> في بيان التطبيق.

لمزيد من المعلومات حول كيفية طلب التطبيقات المثبَّتة الأخرى والتفاعل معها في Android 11، يُرجى الاطّلاع على صفحة الخصوصية المتعلقة بمدى رؤية الحِزم.

FORCE_ENABLE_SCOPED_STORAGE

رقم تعريف التغيير: القيمة: 132649864

الحالة التلقائية: غير مفعَّلة لجميع التطبيقات.

تستخدم جميع التطبيقات التي تستهدف Android 11 الآن ميزة "التخزين الفرعي" تلقائيًا ولم يعُد بإمكانها إيقافها.

ومع ذلك، إذا كان تطبيقك لا يزال يستهدف Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأقدم، يمكنك اختبار تطبيقك باستخدام ميزة "التخزين الفرعي"، بغض النظر عن إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك وقيم علامات البيان، من خلال تفعيل هذا التغيير.

لمزيد من المعلومات حول التغييرات التي تم إجراؤها على ميزة "التخزين الفرعي" في Android 11، يُرجى الاطّلاع على قسم التخزين الفرعي في الصفحة التي تتناول التغييرات التي تم إجراؤها على مساحة التخزين في Android 11.

GET_DATA_CONNECTION_STATE_R_VERSION

رقم تعريف التغيير: 148535736

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

للتحقّق من إصدار حزمة تطوير البرامج (SDK) في PreciseDataConnectionState#getDataConnectionState.

GET_DATA_STATE_R_VERSION

رقم تعريف التغيير: 148534348

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

للتحقّق من إصدار حزمة تطوير البرامج (SDK) في getDataState().

GET_PROVIDER_SECURITY_EXCEPTIONS

رقم تعريف التغيير: 150935354

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث، getProvider(String) لم يعُد يعرض أي استثناءات أمان.

GET_TARGET_SDK_VERSION_CODE_CHANGE

رقم تعريف التغيير: 145147528

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأحدث.

للتحقّق من إصدار حزمة تطوير البرامج (SDK) في الطريقة SmsManager.sendResolverResult().

GWP_ASAN

رقم تعريف التغيير: 135634846

الحالة التلقائية: غير مفعَّلة لجميع التطبيقات.

لتفعيل ميزة رصد الأخطاء في الذاكرة الأصلية التي تم أخذ عيّنات منها في التطبيقات.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على دليل GWP-ASan.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

رقم تعريف التغيير: 149997251

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأحدث، تتم إزالة إذن الوصول إلى جميع الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) والتي تشكّل جزءًا من قائمة max-target-p (greylist-max-p) في Android 10 (مستوى واجهة برمجة التطبيقات 29).

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

رقم تعريف التغيير: 149994052

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث، تتم إزالة إذن الوصول إلى جميع الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) والتي تشكّل جزءًا من قائمة max-target-q (greylist-max-q) في Android 11 (مستوى واجهة برمجة التطبيقات 30).

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) والتي تم حظرها الآن في Android 11.

LISTEN_CODE_CHANGE

رقم تعريف التغيير: 147600208

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأحدث.

للتحقّق من إصدار حزمة تطوير البرامج (SDK) في TelephonyManager.listen(PhoneStateListener, int).

MISSING_APP_TAG

رقم تعريف التغيير: 150776642

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، يتم الآن عرض خطأ عندما لا يحتوي ملف بيان التطبيق على العلامة application أو instrumentation.

NATIVE_HEAP_POINTER_TAGGING

رقم تعريف التغيير: 135754954

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، تحتوي الآن عمليات تخصيص الذاكرة المؤقتة الأصلية على علامة غير صفرية في البايت الأكثر أهمية.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة وضع علامات على مؤشرات الذاكرة المؤقتة.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

رقم تعريف التغيير: 150880553

الحالة التلقائية: مفعَّلة لجميع التطبيقات.

بالنسبة إلى التطبيقات التي تستهدف Android 11، هناك الآن حدّ لعدد عناصر PhoneStateListener التي يمكن لأي عملية تسجيلها من خلال TelephonyManager.listen(PhoneStateListener, int). الحدّ التلقائي هو 50، ويمكن تغييره من خلال تحديثات إعدادات الجهاز عن بُعد. يتم فرض هذا الحدّ باستخدام IllegalStateException الذي تعرضه الطريقة TelephonyManager.listen(PhoneStateListener, int) عندما تحاول العملية المخالفة تسجيل مستمع واحد أكثر من اللازم.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

رقم تعريف التغيير: 142365358

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

لم يعُد بإمكان التطبيقات التي تستهدف Android 11 استخدام طبقة إضافية من الانعكاس للوصول إلى الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) والمقيّدة.

PROCESS_CAPABILITY_CHANGE_ID

رقم تعريف التغيير: 136274596

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، يمكن الآن استخدام العلامة Context.BIND_INCLUDE_CAPABILITIES لنقل الإمكانات أثناء الاستخدام من عملية العميل إلى خدمة مرتبطة.

REMOVE_ANDROID_TEST_BASE

رقم تعريف التغيير: 133396946

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى التطبيقات التي تستهدف Android 11، تمت إزالة مكتبة android.test.base إذا لم يكن التطبيق يعتمد على android.test.runner (لأنّه يعتمد على الفئات من مكتبة android.test.base).

REQUEST_ACCESSIBILITY_BUTTON_CHANGE

رقم تعريف التغيير: 136293963

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

بالنسبة إلى خدمات تسهيل الاستخدام التي تستهدف Android 11، يجب الآن تحديد العلامة FLAG_REQUEST_ACCESSIBILITY_BUTTON في ملف البيانات الوصفية لخدمة تسهيل الاستخدام. وبخلاف ذلك، يتم تجاهل العلامة.

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

RESOURCES_ARSC_COMPRESSED

رقم تعريف التغيير: 132742131

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

لا يمكن تثبيت التطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) إذا كانت تحتوي على ملف resources.arsc مضغوط أو إذا لم يكن هذا الملف محاذيًا على حدّ 4 بايت.

لمزيد من المعلومات حول هذا التغيير، يُرجى الاطّلاع على مقالة ملفات الموارد المضغوطة.

RESTRICT_STORAGE_ACCESS_FRAMEWORK

رقم تعريف التغيير: 141600225

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

إذا كان تطبيقك يستهدف Android 11 ويستخدم إطار عمل Storage Access Framework (SAF)، لم يعُد بإمكانك الوصول إلى أدلة معيّنة باستخدام إجراءَي النية ACTION_OPEN_DOCUMENT و ACTION_OPEN_DOCUMENT_TREE. لمزيد من المعلومات حول هذه التغييرات، يُرجى الاطّلاع على قسم "قيود الوصول إلى المستندات " في الصفحة التي تناقش تعديلات الخصوصية المتعلقة بمساحة التخزين في Android 11.

SELINUX_LATEST_CHANGES

رقم تعريف التغيير: 143539591

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

يمنع هذا التغيير التطبيقات من الوصول إلى نطاق SELinux‏ untrusted_app_R-targetSDk. هذا أحد التغييرات الأساسية في إطار التوافق التي تسمح للتطبيقات بتبديل التغييرات الأخرى التي يتم التحكّم فيها من خلال targetSdkVersion بدون تغيير targetSDKVersion في تطبيقها. لهذا السبب، يجب عدم إيقاف هذا التغيير لتطبيق يستهدف Android 11، وإلا لن يعمل التطبيق.

ليس لهذا التغيير أي تأثير في التطبيقات التي تستخدم رقم تعريف مستخدم مشترك.

THROW_SECURITY_EXCEPTIONS

رقم تعريف التغيير: 147340954

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

قبل Android 11، كانت SecurityException تعرض setEnabled واجهات برمجة التطبيقات فقط بسبب خطأ في الإذن. في Android 11، لم يعُد ذلك صحيحًا، ويمكن عرض SecurityException لأي عدد من الأسباب، ولا يتم عرض أي منها للمتصل.

للحفاظ على سلوك واجهة برمجة التطبيقات الحالية، إذا حدث خطأ في إذن قديم أو خطأ في فرض الجهة الفاعلة لتطبيق لا يستهدف Android 11، يتم تحويل الاستثناء إلى IllegalStateException كان موجودًا في المصدر قبل Android 11.

USE_SET_LOCATION_ENABLED

رقم تعريف التغيير: 117835097

الحالة التلقائية: مفعَّلة للتطبيقات التي تستهدف Android 11 (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث.

لم يعُد بإمكان تطبيقات المشرفين التي تستهدف Android 11 استخدام DevicePolicyManager.setSecureSetting(ComponentName, String, String) لتغيير الإعداد المتوقّف نهائيًا Settings.Secure.LOCATION_MODE. بدلاً من ذلك، يجب استخدام DevicePolicyManager.setLocationEnabled(ComponentName, boolean).