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

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

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

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

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

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

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

نقل البيانات إلى الأدلّة التي تظهر عند استخدام مساحة تخزين محدَّدة

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

اختبار مساحة التخزين المخصّصة

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

لإيقاف مساحة التخزين ذات النطاق الواسع واستخدام نموذج مساحة التخزين القديم بدلاً من ذلك، يجب إلغاء ضبط كلتا العلامتين.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

لن تتمكّن بعد ذلك من استخدام إجراء نية 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، سيظهر للمستخدمين مربّع حوار مختلف مقارنةً بالإصدار 10 من Android. يشير مربع الحوار إلى أن تطبيقك يطلب الوصول إلى الصور والوسائط، كما هو موضّح في الشكل 1.

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

استهداف Android 11

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

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

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

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

مصادر إضافية

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

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

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