تعديلات الأذونات في 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 intent تحديد حزمة، ما يؤدي إلى توجيه المستخدم إلى شاشة خاصة بالتطبيق لإدارة الإذن. لم تعُد هذه الوظيفة متاحة اعتبارًا من الإصدار 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