يتيح نظام التشغيل 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
تحديد حِزمة، ما يؤدي إلى توجيه المستخدم إلى شاشة خاصة بالتطبيق لإدارة الإذن. لم تعُد هذه الوظيفة متاحة اعتبارًا من الإصدار
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
فقط للطرق الواردة في القائمة السابقة، يمكنك تعديل ملف البيان على النحو التالي:
- عليك تغيير بيان
READ_PHONE_STATE
لكي لا يستخدم تطبيقك الإذن إلا على الإصدار Android 10 (المستوى 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