حالات استخدام مساحة التخزين على Android وأفضل الممارسات المتعلِّقة بها

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

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

لمزيد من المعلومات حول كيفية تخزين الملفات والوصول إليها على Android، يُرجى الاطّلاع على أدلة التدريب حول مساحة التخزين.

معالجة ملفات الوسائط

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

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

عرض ملفات صور أو فيديو من مجلدات متعددة

طلب بحث عن مجموعة وسائط باستخدام query() واجهة برمجة التطبيقات. لفلترة ملفات الوسائط أو ترتيبها، اضبط projection وselection المَعلمتَان selectionArgs وsortOrder

عرض صور أو فيديوهات من مجلد معيّن

استخدم هذا النهج:

  1. اتّبِع أفضل الممارسات الموضّحة في مقالة طلب أذونات التطبيق، واطلب إذن READ_EXTERNAL_STORAGE .
  2. استرداد ملفات الوسائط استنادًا إلى قيمة MediaColumns.DATA، التي تحتوي على المسار المطلق لنظام الملفات إلى عنصر الوسائط على القرص

ملاحظة: عند الوصول إلى ملف وسائط حالي، يمكنك استخدام قيمة عمود DATA في منطقك. وذلك لأن هذه القيمة لها مسار ملف صالح. ومع ذلك، لا تفترض أن الملف متاح دائمًا. يجب الاستعداد للتعامل مع أي أخطاء في الإدخال/الإخراج المستندة إلى الملفات التي قد تحدث.

من ناحية أخرى، لإنشاء ملف وسائط أو تعديله، لا تستخدِم عمود DATA. بدلاً من ذلك، استخدِم عمودَي DISPLAY_NAME و RELATIVE_PATH.

الوصول إلى معلومات الموقع الجغرافي من الصور

إذا كان تطبيقك يستخدم مساحة تخزين واسعة النطاق، اتّبِع الخطوات الواردة في مقالة معلومات الموقع الجغرافي. في الصور الفوتوغرافية في دليل تخزين الوسائط.

تحديد مكان تخزين الملفات الجديدة التي يتم تنزيلها

إذا كان تطبيقك يستخدم مساحة تخزين محدَّدة النطاق، انتبِه إلى الموقع الجغرافي الذي تختاره تخزين ملفات الوسائط التي تنزّلها

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

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

تصدير ملفات وسائط المستخدم إلى جهاز

تحديد موقع تلقائي مناسب لتخزين وسائط المستخدم الملفات:

تعديل ملفات وسائط متعددة أو حذفها في عملية واحدة

دمج منطق استنادًا إلى إصدارات Android التي يعمل عليها تطبيقك

تعمل بنظام التشغيل Android 11

اتّبِع الخطوات التالية:

  1. إنشاء طلب intent في انتظار المراجعة لطلب الكتابة أو الحذف الخاص بتطبيقك باستخدام MediaStore.createWriteRequest() أو MediaStore.createTrashRequest() ثم مطالبة المستخدم بمنح الإذن بتعديل مجموعة من الملفات من خلال استدعاء والنية.
  2. تقييم رد المستخدم:

    • إذا تم منح الإذن، يمكنك متابعة عملية التعديل أو الحذف.
    • إذا لم يتم منح الإذن، اشرح للمستخدم سبب احتياج الميزة في تطبيقك إلى الإذن.

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

يعمل بنظام التشغيل Android 10

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

يعمل بالإصدار 9 من Android أو إصدار أقدم

استخدم هذا النهج:

  1. باتّباع أفضل الممارسات الموضّحة في مقالة طلب أذونات التطبيق، اطلب WRITE_EXTERNAL_STORAGE إذن.
  2. استخدِم واجهة برمجة التطبيقات MediaStore لتعديل أو حذف ملفات الوسائط.

استيراد صورة واحدة حالية

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

تقديم واجهة مستخدِم خاصة بك

استخدم هذا النهج:

  1. اتّبِع أفضل الممارسات الموضّحة في مقالة طلب أذونات التطبيق، واطلب إذن READ_EXTERNAL_STORAGE .
  2. استخدام query() واجهة برمجة التطبيقات للاستعلام عن مجموعة وسائط.
  3. عرض النتائج في واجهة المستخدم المخصّصة لتطبيقك

استخدام أداة اختيار النظام

استخدِم ACTION_GET_CONTENT intent، الذي يطلب من المستخدم اختيار صورة لاستيرادها.

إذا أردت فلترة أنواع الصور التي تعرِضها أداة اختيار النظام للمستخدمين للاختيار من بينها، يمكنك استخدام رمزَي setType() أو EXTRA_MIME_TYPES.

التقاط صورة واحدة

عندما تريد التقاط صورة واحدة لاستخدامها في تطبيقك (على سبيل المثال، لاستخدامها كصورة لملف مستخدم)، استخدِم رمز الإجراء ACTION_IMAGE_CAPTURE لطلب التقاط المستخدم صورة باستخدام كاميرا الجهاز. النظام لتخزين الصورة التي تم التقاطها في جدول MediaStore.Images.

مشاركة ملفات الوسائط مع تطبيقات أخرى

استخدِم الأسلوب insert() لإضافة السجلّات مباشرةً إلى MediaStore. لمزيد من المعلومات، يُرجى مراجعة القسم إضافة عنصر في دليل تخزين الوسائط.

مشاركة ملفات الوسائط مع تطبيق محدّد

استخدام مكوّن FileProvider لنظام التشغيل Android على النحو الموضَّح في ملف الإعداد دليل المشاركة.

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

تضمين منطق يستند إلى إصدارات Android التي يعمل عليها تطبيقك.

تعمل بنظام التشغيل Android 11

اتّبِع الخطوات التالية:

  1. اتّبِع أفضل الممارسات الموضّحة في مقالة طلب أذونات التطبيق، واطلب إذن READ_EXTERNAL_STORAGE .
  2. الوصول إلى الملفات باستخدام مسارات الملفات المباشرة

لمزيد من المعلومات، اطّلِع على القسم حول كيفية فتح ملفات الوسائط باستخدام مسارات الملفات المباشرة.

توفُّر الإصدار Android 10

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

يعمل بالإصدار 9 من Android أو إصدار أقدم

استخدم هذا النهج:

  1. اتّبِع أفضل الممارسات الموضّحة في مقالة طلب أذونات التطبيق، واطلب إذن WRITE_EXTERNAL_STORAGE .
  2. الوصول إلى الملفات باستخدام مسارات الملفات المباشرة

التعامل مع ملفات غير الوسائط

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

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

فتح ملف مستند

استخدام ACTION_OPEN_DOCUMENT أن تطلب من المستخدم اختيار ملف لفتحه باستخدام أداة اختيار النظام. إذا كنت تريد تصفية أنواع الملفات التي سيعرضها منتقي النظام إلى مستخدم للاختيار من بينها، فيمكنك استخدام setType() أو EXTRA_MIME_TYPES

على سبيل المثال، يمكنك العثور على جميع ملفات PDF وODT وTXT باستخدام ما يلي: الرمز:

KotlinJava
startActivityForResult(
        Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
            addCategory(Intent.CATEGORY_OPENABLE)
            type = "*/*"
            putExtra(Intent.EXTRA_MIME_TYPES, arrayOf(
                    "application/pdf", // .pdf
                    "application/vnd.oasis.opendocument.text", // .odt
                    "text/plain" // .txt
            ))
        },
        REQUEST_CODE
      )
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {
                "application/pdf", // .pdf
                "application/vnd.oasis.opendocument.text", // .odt
                "text/plain" // .txt
        });
        startActivityForResult(intent, REQUEST_CODE);

الكتابة في الملفات على مجلدات مساحة التخزين الثانوية

تشتمل مساحات التخزين الثانوية على بطاقات SD. يمكنك الوصول إلى معلومات حول ملف تخزين معيّن باستخدام فئة StorageVolume.

تضمين منطق استنادًا إلى إصدار Android الذي يعمل عليه تطبيقك.

تعمل بنظام التشغيل Android 11

استخدم هذا النهج:

  1. استخدِم نموذج مساحة التخزين ذات النطاق المحدّد.
  2. استهداف الإصدار 10 من نظام التشغيل Android (المستوى 29 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم
  3. أدخِل الإذن WRITE_EXTERNAL_STORAGE .
  4. نفِّذ أحد أنواع الوصول التالية:
    • الوصول إلى الملفات باستخدام واجهة برمجة التطبيقات MediaStore
    • الوصول المباشر إلى مسار الملف باستخدام واجهات برمجة التطبيقات، مثل File أو fopen()

التشغيل على الإصدارات القديمة

استخدِم إطار عمل الوصول إلى مساحة التخزين الذي يسمح للمستخدمين بتحديد الموقع على وحدة تخزين ثانوية يمكن لتطبيقك كتابة الملف فيها.

نقل الملفات الحالية من موقع تخزين قديم

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

الحفاظ على إمكانية الوصول إلى موقع التخزين القديم لنقل البيانات

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

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

  2. يُرجى مواصلة إيقاف ميزة "مساحة التخزين المخصّصة" حتى تتمكّن تطبيقك من مواصلة الوصول إلى ملفاتك في موقع التخزين القديم على أجهزة Android 10.

إذا كان تطبيقك يستهدف نظام التشغيل Android 10

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

نقل بيانات التطبيق

عندما يصبح تطبيقك جاهزًا لنقل البيانات، اتّبِع الخطوات التالية:

  1. استهداف الإصدار 10 من نظام التشغيل Android أو الإصدارات الأقدم
  2. إيقاف ميزة "التخزين الفرعي" لكي يتمكّن تطبيقك من الوصول إلى الملفات التي تحتاج إلى نقلها
  3. يمكنك نشر رمز برمجي يستخدم واجهة برمجة التطبيقات File لنقل الملفات من موقعها الحالي ضمن /sdcard/ إلى موقع يمكن الوصول إليه باستخدام مساحة التخزين ذات النطاق المحدّد:

    1. انقل أي ملفات تطبيق خاصة إلى الدليل الذي يعرضه الملف getExternalFilesDir() .
    2. نقل أي ملفات غير إعلامية مشترَكة إلى دليل فرعي مخصّص للتطبيق ضمن directoryDownloads/
  4. أزِل أدلة مساحة التخزين القديمة لتطبيقك من دليل /sdcard/.

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

بعد نقل المستخدمين لبياناتهم، انشر تحديثًا آخر في تطبيقك حيث تستهدف Android 11.

مشاركة المحتوى مع تطبيقات أخرى

لمشاركة ملفات تطبيقك مع تطبيق واحد آخر، استخدِم FileProvider بالنسبة إلى التطبيقات التي تحتاج إلى مشاركةملفاتها مع بعضها، ننصحك باستخدام مقدّم محتوى لكل تطبيق، ثم تتم مزامنة البيانات عند إضافة التطبيقات إلى المجموعة.

تخزين ملفات غير ملفّات الوسائط مؤقتًا

تعتمد الطريقة التي يجب اتّباعها على نوع الملفات التي تحتاج إلى تخزينها مؤقتًا.

  • الملفات الصغيرة أو الملفات التي تحتوي على معلومات حساسة: استخدم Context#getCacheDir()
  • الملفات الكبيرة أو الملفات التي لا تحتوي على معلومات حسّاسة: استخدِم Context#getExternalCacheDir().

تصدير الملفات غير المتعلقة بالوسائط إلى جهاز

تحديد موقع تلقائي مناسب لتخزين ملفات غير الوسائط الملفات. السماح للمستخدمين بتصدير الملفات من الأدلة الخاصة بالتطبيقات إلى مكان يمكن الوصول إليه بشكل عام. استخدِم عمليات التنزيل أو مجموعات المستندات في MediaStore لتصدير الملفات غير المتعلقة بالوسائط إلى الجهاز.

معالجة الملفات الخاصة بالتطبيق

في حال أنشأ تطبيقك ملفات لا تحتاج التطبيقات الأخرى إلى الوصول إليها، أو لا يُسمح بالوصول إليه، فيمكنك تخزين هذه الملفات في مواقع التخزين الخاصة بالتطبيق.

أدلة مساحة التخزين الداخلية

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

أدلة مساحة التخزين الخارجية

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

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

عندما يلغي المستخدم تثبيت تطبيقك، يتم تخزين الملفات المحفوظة في مساحة التخزين الخاصة بالتطبيق. إزالتها، وبالتالي لا ينبغي لك استخدام مساحة التخزين هذه لتوفير أي شيء يتوقع المستخدم استمراره بشكل مستقل عن تطبيقك.

إيقاف ميزة "مساحة التخزين ذات النطاق المحدّد" مؤقتًا

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

إيقاف الميزة في اختباراتك

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

إذا كان الاختبار يُخرج ملفات للمضيف، مثل لقطات الشاشة أو بيانات تصحيح الأخطاء أو بيانات التغطية أو مقاييس الأداء، يمكنك كتابة هذه الملفات في الدلائل العميقة . لإجراء ذلك، أضف العلامة التالية إلى أداة الربط ذات الصلة يستدعي am instrument:

-e no-isolated-storage 1

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

إيقاف الميزة في تطبيقك العلني

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

<manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10. -->
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

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

مصادر إضافية

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

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