تعديلات الأذونات في Android 11

يتيح نظام التشغيل 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.

إذا كان تطبيقك يعلن عن READ_PHONE_STATE لاستدعاء طُرق أخرى غير تلك الواردة في القائمة السابقة، يمكنك مواصلة طلب READ_PHONE_STATE على جميع إصدارات Android. في حال استخدام الإذن READ_PHONE_STATE فقط مع methods في القائمة السابقة، عليك تعديل ملف البيان على النحو التالي:

  1. عليك تغيير بيان READ_PHONE_STATE لكي يستخدم تطبيقك إذن فقط على الإصدار 10 من Android (المستوى 29 لواجهة برمجة التطبيقات) والإصدارات الأقدم.
  2. أضِف إذن 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