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

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

الأذونات لمرة واحدة

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

مزيد من المعلومات حول كيفية تعامل النظام مع الأذونات لمرة واحدة

إعادة ضبط الأذونات تلقائيًا من التطبيقات غير المستخدَمة

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

مزيد من المعلومات حول كيفية إعادة ضبط النظام لأذونات التطبيقات غير المستخدَمة تلقائيًا

ظهور مربّع حوار الإذن

بدءًا من الإصدار 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 فقط للطُرق المذكورة في القائمة السابقة، يُرجى تعديل ملف البيان على النحو التالي:

  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