تعديلات الأذونات في 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_ فيديوهاتك دائمًا إلى شاشة أذونات النظام.

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

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

أرقام الهواتف

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