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

يستخدم 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 على الغرض من الملف أكثر من موقعه الجغرافي لتحديد قدرة التطبيق على الوصول إلى ملف معيّن والتعديل فيه. ضِمن على وجه التحديد، إذا كان تطبيقك يستهدف Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب لا يؤثر إذن "WRITE_EXTERNAL_STORAGE" في تطبيقك. الوصول إلى مساحة التخزين. يساعد نموذج التخزين المستنِد إلى الغرض هذا في تحسين خصوصية المستخدم. لأنّه يُمنح للتطبيقات إذن الوصول فقط إلى الأقسام ضمن نظام الملفات في الجهاز التي يستخدمونها بالفعل.

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

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

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

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

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

عرض الملفات على جهاز

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

مصادر إضافية

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

الفيديوهات