نظرة عامة على تخزين الملفات والبيانات

يستخدم Android نظام ملفات مشابهًا لأنظمة الملفات القائمة على القرص على الأنظمة الأساسية الأخرى. يوفّر لك النظام عدة خيارات لحفظ بيانات تطبيقك:

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

يتم تلخيص خصائص هذه الخيارات في الجدول التالي:

نوع المحتوى طريقة الوصول الأذونات المطلوبة هل يمكن للتطبيقات الأخرى الوصول؟ هل تمت إزالة الملفات عند إلغاء تثبيت التطبيق؟
الملفات الخاصة بالتطبيقات الملفات المخصَّصة لاستخدام تطبيقك فقط من وحدة التخزين الداخلية، getFilesDir() أو getCacheDir()

من وحدة التخزين الخارجية، getExternalFilesDir() أو getExternalCacheDir()
لا حاجة إليه مطلقًا لاستخدام وحدة التخزين الداخلية

لا يلزم استخدام وحدة التخزين الخارجية عند استخدام تطبيقك على أجهزة تعمل بالإصدار 4.4 من نظام التشغيل Android (المستوى 19 من واجهة برمجة التطبيقات) أو إصدارات أحدث.
لا نعم
الوسائط ملفات الوسائط القابلة للمشاركة (الصور والملفات الصوتية والفيديوهات) واجهة برمجة تطبيقات MediaStore READ_EXTERNAL_STORAGE عند الوصول إلى ملفات تطبيقات أخرى على Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث

READ_EXTERNAL_STORAGE أو WRITE_EXTERNAL_STORAGE عند الوصول إلى ملفات التطبيقات الأخرى على Android 10 (المستوى 29 من واجهة برمجة التطبيقات)

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

يعتمد الحلّ الذي تختاره على احتياجاتك المحددة:

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

فئات مواقع التخزين

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

تظهر وحدات التخزين القابلة للإزالة، مثل بطاقة SD، في نظام الملفات كجزء من مساحة التخزين الخارجية. ويمثل Android هذه الأجهزة باستخدام مسار، مثل /sdcard.

يتم تخزين التطبيقات نفسها داخل وحدة التخزين الداخلية تلقائيًا. إذا كان حجم حزمة APK كبيرًا جدًا، يمكنك بدلاً من ذلك الإشارة إلى خيارك المفضّل في ملف بيان تطبيقك لتثبيت التطبيق على وحدة تخزين خارجية:

<manifest ...
  android:installLocation="preferExternal">
  ...
</manifest>

الأذونات والوصول إلى وحدة التخزين الخارجية

يحدد Android الأذونات التالية المتعلقة بمساحة التخزين: READ_EXTERNAL_STORAGE وWRITE_EXTERNAL_STORAGE وMANAGE_EXTERNAL_STORAGE.

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

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

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

التخزين الفرعي

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

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

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

عرض الملفات على أحد الأجهزة

للاطّلاع على الملفات المُخزَّنة على أحد الأجهزة، استخدِم مستكشف ملفات الجهاز من "استوديو Android".

مصادر إضافية

لمزيد من المعلومات حول تخزين البيانات، يُرجى الرجوع إلى الموارد التالية.

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