تحديثات مساحة التخزين في Android 11

يعزّز Android 11 (المستوى 30 لواجهة برمجة التطبيقات) النظام الأساسي ويوفر حماية أفضل لبيانات المستخدمين والتطبيقات على وحدة التخزين الخارجية. يقدّم هذا الإصدار العديد من التحسينات، مثل الوصول إلى مسار الملف الأولي وعمليات التعديل المجمّع للوسائط، بالإضافة إلى واجهة مستخدم محدَّثة لإطار عمل الوصول إلى مساحة التخزين.

يوفّر الإصدار أيضًا تحسينات على مساحة التخزين المحدّدة، ما يسهّل على المطوّرين تنفيذ حالات استخدام مساحة التخزين بعد الانتقال إلى استخدام نموذج مساحة التخزين هذا.

فرض ميزة "التخزين الفرعي"

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

الحفاظ على التوافق مع Android 10

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

نقل البيانات إلى الأدلة المرئية عند استخدام مساحة تخزين نطاق

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

اختبار سعة التخزين ذات النطاق

لتفعيل ميزة التخزين في النطاق في تطبيقك، بغض النظر عن قيم إصدار حزمة تطوير البرامج (SDK) المستهدَف في تطبيقك وقيم علامات البيان، عليك تفعيل علامات التوافق التالية:

لإيقاف مساحة التخزين ذات النطاق المسموح به واستخدام نموذج مساحة التخزين القديم بدلاً من ذلك، أزِل العلامتَين.

إدارة مساحة التخزين في الجهاز

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

  1. تحقَّق من توفّر مساحة فارغة من خلال استدعاء إجراء ACTION_MANAGE_STORAGE المخصّص.
  2. وإذا لم تكن هناك مساحة خالية كافية على الجهاز، اطلب من المستخدم منح تطبيقك الموافقة لمحو جميع ذاكرات التخزين المؤقت. ولإجراء ذلك، عليك استدعاء إجراء ACTION_CLEAR_APP_CACHE.

دليل خاص بالتطبيق على مساحة التخزين الخارجية

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

الوصول إلى ملف الوسائط

لتسهيل الوصول إلى الوسائط مع الحفاظ على خصوصية المستخدم، يضيف نظام التشغيل Android 11 الإمكانيات التالية.

تنفيذ عمليات مجمَّعة

لتحقيق الاتساق على جميع الأجهزة وزيادة الراحة للمستخدم، يضيف Android 11 عدة طرق تسهّل إدارة مجموعات ملفات الوسائط.

الوصول إلى الملفات باستخدام مسارات الملفات المباشرة والمكتبات الأصلية

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

  • واجهة برمجة التطبيقات في File.
  • المكتبات الأصلية، مثل fopen().

الوصول إلى البيانات من تطبيقات أخرى

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

الوصول إلى أدلة البيانات على وحدة التخزين الداخلية

بدأ Android 9 (المستوى 28 من واجهة برمجة التطبيقات) بتقييد التطبيقات التي يمكنها جعل الملفات في أدلة البيانات على مساحة التخزين الداخلية متاحة في جميع أنحاء العالم للتطبيقات الأخرى. لا يمكن للتطبيقات التي تستهدف الإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث جعل الملفات في أدلة البيانات المتاحة للجميع.

ويتم توسيع نطاق Android 11 بعد تطبيق هذا الحظر. إذا كان تطبيقك يستهدف الإصدار 11 من نظام التشغيل Android، لن يتمكّن من الوصول إلى الملفات في دليل بيانات أي تطبيق آخر، حتى إذا كان التطبيق الآخر يستهدف الإصدار Android 8.1 (المستوى 27 من واجهة برمجة التطبيقات) أو أقل، وجعل الملفات في دليل البيانات الخاصة به سهلة القراءة على مستوى العالم.

الوصول إلى الأدلة الخاصة بالتطبيق على وحدة التخزين الخارجية

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

قيود الوصول إلى المستندات

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

الوصول إلى الأدلة

لم يعُد بإمكانك استخدام إجراء ACTION_OPEN_DOCUMENT_TREE لطلب الوصول إلى الأدلة التالية:

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

الوصول إلى الملفات

لم يعُد بإمكانك استخدام إجراء ACTION_OPEN_DOCUMENT_TREE أو الإجراء على ACTION_OPEN_DOCUMENT لطلب اختيار ملفات فردية من الأدلة التالية:

  • دليل Android/data/ وجميع الأدلة الفرعية.
  • دليل Android/obb/ وجميع الأدلة الفرعية.

اختبار التغيير

لاختبار هذا التغيير في السلوك، نفِّذ ما يلي:

  1. استدعِ هدفًا من خلال الإجراء ACTION_OPEN_DOCUMENT. تحقَّق من عدم ظهور الدليلَين Android/data/ وAndroid/obb/.
  2. اتّخِذ أحد الإجراءَين أدناه:
    • فعِّل علامة توافق RESTRICT_STORAGE_ACCESS_FRAMEWORK.
    • استهدف الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث.
  3. استدعِ هدفًا من خلال الإجراء ACTION_OPEN_DOCUMENT_TREE. تأكَّد من ظهور دليل Download وظهور زر الإجراء المرتبط بالدليل باللون الرمادي.

الأذونات

يقدِّم نظام التشغيل Android 11 التغييرات التالية المتعلّقة بأذونات مساحة التخزين.

استهداف أي إصدار

يعرض مربع الحوار الأول رابطًا باسم "السماح" في الإعدادات.
الشكل 1. مربّع حوار يظهر عندما يستخدم أحد التطبيقات مساحة تخزين محدّدة النطاق ويطلب إذن READ_EXTERNAL_STORAGE.

تسري التغييرات التالية على نظام التشغيل Android 11، بغض النظر عن إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك:

  • تتم إعادة تسمية إذن وقت تشغيل مساحة التخزين إلى الملفات والوسائط.
  • إذا لم يوقف تطبيقك مساحة التخزين على نطاق واسع ويطلب إذن READ_EXTERNAL_STORAGE، سيظهر للمستخدمين مربّع حوار مختلف عن نظام التشغيل Android 10. يشير مربّع الحوار إلى أنّ تطبيقك يطلب الوصول إلى الصور والوسائط، كما هو موضّح في الشكل 1.

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

استهداف Android 11

إذا كان تطبيقك يستهدف الإصدار 11 من نظام التشغيل Android، لن يعود بإمكان كلّ من إذن WRITE_EXTERNAL_STORAGE والإذن المميّز "WRITE_MEDIA_STORAGE" منح أي أذونات وصول إضافية.

يُرجى العِلم أنّه على الأجهزة التي تعمل بنظام التشغيل Android 10 (المستوى 29 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، يمكن لتطبيقك المساهمة في مجموعات وسائط محدّدة جيدًا مثل MediaStore.Downloads بدون طلب أي أذونات متعلّقة بمساحة التخزين. تعرَّف على مزيد من المعلومات حول كيفية طلب الأذونات الضرورية فقط عند التعامل مع ملفات الوسائط في تطبيقك.

الوصول إلى كل الملفات

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

مراجع إضافية

لمزيد من المعلومات حول التغييرات التي تطرأ على مساحة التخزين في Android 11، يمكنك الاطّلاع على المواد التالية:

مشاركات المدونة

الفيديوهات الطويلة