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

  1. عليك تغيير بيان READ_PHONE_STATE لكي لا يستخدم تطبيقك الإذن إلا على الإصدار Android 10 (المستوى 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