يمنح نظام التشغيل Android 11 المستخدمين إمكانية تحديد أذونات أدق للموقع الجغرافي والميكروفون والكاميرا. بالإضافة إلى ذلك، يُعيد النظام برمجة أذونات التطبيقات غير المستخدمة التي تستهدف الإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث، وقد تحتاج التطبيقات إلى تعديل الأذونات التي تقدّم بيانًا عنها إذا كانت تستخدم نافذة تنبيهات النظام أو تقرأ معلومات ذات صلة بأرقام الهواتف.
الأذونات لمرة واحدة
بدءًا من الإصدار Android 11، عندما يطلب تطبيقك إذنًا مرتبطًا بالموقع الجغرافي أو الميكروفون أو الكاميرا، يحتوي مربّع حوار الأذونات الموجَّه للمستخدمين على خيار يُسمى هذه المرة فقط. إذا اختار المستخدم هذا الخيار في المربّع الحواري، يحصل تطبيقك على إذن مؤقت لمرة واحدة.
مزيد من المعلومات حول كيفية تعامل النظام مع أذونات الاستخدام لمرة واحدة
إعادة ضبط الأذونات تلقائيًا من التطبيقات غير المستخدَمة
إذا كان تطبيقك يستهدف الإصدار 11 من Android أو إصدارًا أحدث ولم يتم استخدامه لعدة أشهر، يحمي النظام بيانات المستخدم من خلال إعادة ضبط أذونات التشغيل الحسّاسة التي منحها المستخدم لتطبيقك تلقائيًا. ويؤدي هذا الإجراء إلى أثر مماثل لما لو اطّلع المستخدم على إذن في إعدادات النظام وغيّر مستوى وصول تطبيقك إلى رفض. إذا كان تطبيقك يتّبع أفضل الممارسات المتعلّقة بطلب الأذونات أثناء التشغيل، لن تحتاج إلى إجراء أي تغييرات عليه. ويعود السبب في ذلك إلى أنّه عندما يتفاعل المستخدِم مع الميزات في تطبيقك، عليك التأكّد من أنّ الميزات حاصلة على الأذونات التي تحتاجها.
اطّلِع على مزيد من المعلومات حول كيفية إعادة ضبط أذونات التطبيقات غير المستخدمة تلقائيًا.
مستوى ظهور مربّع حوار الأذونات
بدءًا من Android 11، إذا نقر المستخدم على رفض لإذن معيّن أكثر من مرّة خلال فترة تثبيت تطبيقك على جهاز، لن يظهر للمستخدم مربّع حوار أذونات النظام إذا طلب تطبيقك هذا الإذن مرة أخرى. يشير إجراء المستخدم إلى "عدم السؤال مرة أخرى". في الإصدارات السابقة، كان يظهر للمستخدمين مربّع حوار أذونات النظام في كل مرة يطلب فيها تطبيقك إذنًا، ما لم يختار المستخدم سابقًا مربّع الاختيار "عدم طلب الإذن مرة أخرى" أو خيارًا مشابهًا. يهدف هذا التغيير في السلوك في Android 11 إلى عدم تكرار طلبات الأذونات التي رفضها المستخدمون.
لتحديد ما إذا تم رفض أذونات التطبيق نهائيًا (لأغراض تصحيح الأخطاء والاختبار)، استخدِم الأمر التالي:
adb shell dumpsys package PACKAGE_NAME
حيث يكون PACKAGE_NAME هو اسم الحزمة المطلوب فحصها.
يحتوي ناتج الأمر على أقسام تبدو على النحو التالي:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
يتم وضع علامة على الأذونات التي رفضها المستخدم مرّة واحدة من خلال USER_SET
.
يتم وضع علامة على الأذونات التي تم رفضها نهائيًا من خلال النقر على رفض مرتين من قِبل USER_FIXED
.
أثناء الاختبار، قد تحتاج إلى إعادة ضبط هذه الإشارات لضمان عدم شعور المختبِرين بالدهشة عند عدم ظهور مربّع حوار الطلب. لإجراء ذلك، استخدِم الأمر التالي:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME هو اسم الإذن الذي تريد إعادة ضبطه. للاطّلاع على قائمة كاملة بأذونات تطبيقات Android، انتقِل إلى صفحة مرجع واجهة برمجة التطبيقات للأذونات.
اطّلِع على مزيد من المعلومات حول كيفية معالجة حالات منع منح الأذونات في تطبيقك.
تغييرات نافذة تنبيه النظام
يُجري نظام التشغيل Android 11 عدة تغييرات على طريقة منح التطبيقات إذن
SYSTEM_ALERT_WINDOW
. تهدف هذه التغييرات إلى حماية المستخدمين من خلال جعل منح الأذونات أكثر دقة.
منح تطبيقات معيّنة الإذن SYSTEM_ALERT_WINDOW تلقائيًا عند الطلب
تحصل فئات معيّنة من التطبيقات تلقائيًا على إذن SYSTEM_ALERT_WINDOW
عند الطلب:
أي تطبيق لديه
ROLE_CALL_SCREENING
ويطلبSYSTEM_ALERT_WINDOW
يحصل تلقائيًا على الإذن. إذا فقد التطبيقROLE_CALL_SCREENING
، سيفقد الإذن.أي تطبيق يلتقط الشاشة من خلال
MediaProjection
ويطلبSYSTEM_ALERT_WINDOW
يحصل تلقائيًا على الإذن ما لم يرفض المستخدم الإذن للتطبيق صراحةً. وعندما يتوقف التطبيق عن التقاط الشاشة، يفقد الإذن. هذه الحالة مخصّصة بشكل أساسي للتطبيقات التي تبثّ الألعاب مباشرةً.
ولا تحتاج هذه التطبيقات إلى إرسال
ACTION_MANAGE_OVERLAY_PERMISSION
للحصول على إذن SYSTEM_ALERT_WINDOW
، بل يمكن للتطبيقات طلب
SYSTEM_ALERT_WINDOW
مباشرةً.
تنقل نوايا MANAGE_OVERLAY_PERMISSION المستخدم دائمًا إلى شاشة أذونات النظام.
بدءًا من الإصدار Android 11، تنقل طلبات الإجراء
ACTION_MANAGE_OVERLAY_PERMISSION
المستخدم دائمًا إلى شاشة الإعدادات ذات المستوى الأعلى، حيث يمكنه منح التطبيقات
SYSTEM_ALERT_WINDOW
الأذونات أو إبطالها. يتم تجاهل أي بيانات package:
في النية.
في الإصدارات السابقة من Android، كان بإمكان ACTION_MANAGE_OVERLAY_PERMISSION
intent تحديد حزمة، ما يؤدي إلى توجيه المستخدم إلى شاشة خاصة بالتطبيق لإدارة الإذن. لم تعُد هذه الوظيفة متاحة اعتبارًا من الإصدار
Android 11. بدلاً من ذلك، على المستخدم أولاً اختيار التطبيق الذي يريد منح الإذن له أو إبطاله. يهدف هذا التغيير إلى حماية المستخدمين
من خلال جعل منح الأذونات أكثر دقة.
أرقام الهواتف
يغيّر نظام التشغيل Android 11 الإذن المرتبط بالهاتف الذي يستخدمه تطبيقك عند قراءة أرقام الهواتف.
إذا كان تطبيقك يستهدف الإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث وكان يحتاج إلى الوصول إلى
واجهات برمجة تطبيقات أرقام الهواتف المعروضة في القائمة التالية، يجب طلب الإذن
READ_PHONE_NUMBERS
بدلاً من الإذنREAD_PHONE_STATE
.
- طريقة
getLine1Number()
في كلّ من فئةTelephonyManager
وفئةTelecomManager
- طريقة
getMsisdn()
غير المتوافقة في فئةTelephonyManager
إذا كان تطبيقك يعلن عن READ_PHONE_STATE
لاستدعاء طُرق أخرى غير تلك الواردة في
القائمة السابقة، يمكنك مواصلة طلب READ_PHONE_STATE
على جميع
إصدارات Android. في حال استخدام الإذن READ_PHONE_STATE
فقط مع methods في القائمة السابقة، عليك تعديل ملف البيان على النحو التالي:
- عليك تغيير بيان
READ_PHONE_STATE
لكي يستخدم تطبيقك إذن فقط على الإصدار 10 من Android (المستوى 29 لواجهة برمجة التطبيقات) والإصدارات الأقدم. - أضِف إذن
READ_PHONE_NUMBERS
.
يوضِّح المقتطف التالي لبيان البيان هذه العملية:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
مصادر إضافية
لمزيد من المعلومات عن التغييرات التي طرأت على الأذونات في Android 11، يمكنك الاطّلاع على المراجع التالية:
الفيديوهات
التطوير وفقًا لأحدث تغييرات الخصوصية في Android 11