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

يستخدم 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. إلى مزيد من المعلومات حول هذا الإذن وسبب عدم احتياج معظم التطبيقات إلى طلب الإذن وتلبية حالات الاستخدام لديهم، راجع الدليل حول كيفية إدارة جميع الملفات على جهاز تخزين.

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

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

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

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

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

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

مصادر إضافية

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

الفيديوهات