إدارة كل الملفات على جهاز تخزين

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

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

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

يمكن للتطبيق أن يطلب من المستخدم الوصول إلى جميع الملفات عن طريق تنفيذ ما يلي:

  1. يجب تقديم إذن MANAGE_EXTERNAL_STORAGE في البيان.
  2. يمكنك استخدام إجراء ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION القصد لتوجيه المستخدمين إلى صفحة إعدادات النظام حيث يمكنهم تفعيل الخيار التالي لتطبيقك: السماح بالوصول إلى إدارة جميع الملفات.

لمعرفة ما إذا كان تطبيقك قد حصل على إذن "MANAGE_EXTERNAL_STORAGE"، يُرجى الاتصال على Environment.isExternalStorageManager().

العمليات التي تسمح بها MANAGE_EXTERNAL_STORAGE

يمنح الإذن MANAGE_EXTERNAL_STORAGE ما يلي:

  • الإذن بالوصول للقراءة والكتابة إلى جميع الملفات ضمن مساحة التخزين المشتركة.

  • الوصول إلى محتوى جدول MediaStore.Files.

  • توفر إمكانية الوصول إلى الدليل الجذري لكل من محرك أقراص USB أثناء التنقل (OTG) وبطاقة SD.

  • إذن بالوصول للكتابة إلى جميع أدلة مساحة التخزين الداخلية⁠ باستثناء /Android/data/ و/sdcard/Android ومعظم الأدلة الفرعية لـ /sdcard/Android. يتضمن الوصول للكتابة هذه إمكانية الوصول إلى مسار الملف المباشر.

    ما زال بإمكان التطبيقات التي تم منحها هذا الإذن الوصول إلى الأدلة الخاصة بالتطبيقات التي تنتمي إلى تطبيقات أخرى، لأن هذه الأدلة تظهر كأدلة فرعية لـ Android/data/ في حجم مساحة التخزين.

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

استدعاء نشاط إدارة مساحة التخزين في تطبيق آخر

في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للتطبيقات التي لديها كل من إذن MANAGE_EXTERNAL_STORAGE وإذن QUERY_ALL_PACKAGES، مثل تطبيقات إدارة الملفات، استخدام getManageSpaceActivityIntent() لتوجيه المستخدمين إلى نشاط إدارة المساحة المخصّصة على تطبيق آخر.

تستخدم الطريقة getManageSpaceActivityIntent() اسم الحزمة ورمز طلب، وتعرض أحد ما يلي:

  • PendingIntent، إذا كان التطبيق الذي يحمل اسم الحزمة المحدَّد قد حدَّد نشاطًا مخصَّصًا لـ "إدارة المساحة". ويمكن لتطبيق إدارة الملفات الذي يُسمى طريقة getManageSpaceActivityIntent() بعد ذلك استدعاء الغرض الذي تم إرجاعه لإرسال المستخدمين إلى النشاط المخصّص.
  • null، إذا لم يحدِّد التطبيق الذي يحمل اسم الحزمة المحدد نشاط "إدارة مساحة".

تفعيل MANAGE_EXTERNAL_STORAGE للاختبار

لاستكشاف مدى تأثير إذن MANAGE_EXTERNAL_STORAGE في تطبيقك، يمكنك تفعيل الإذن للاختبار. للقيام بذلك، قم بتشغيل الأمر التالي على الجهاز المتصل بجهاز الاختبار:

adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow

إشعار Google Play

يقدّم هذا القسم إشعارًا للمطوّرين الذين ينشرون تطبيقات على Google Play.

للحد من الوصول الواسع النطاق إلى مساحة التخزين المشتركة، عدّل "متجر Google Play" سياسته لتقييم التطبيقات التي تستهدف إصدار Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، وتطلب الوصول إلى كل الملفات من خلال إذن MANAGE_EXTERNAL_STORAGE. تسري هذه السياسة اعتبارًا من أيار (مايو) 2021.

عندما يستهدف تطبيقك الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث ويتضمّن تقديم بيان لإذن MANAGE_EXTERNAL_STORAGE، يعرض "استوديو Android" تحذيرًا بالوبر الذي يظهر في الشكل 1. يذكرك هذا التحذير بأنّ "متجر Google Play" يتضمّن سياسة تحدّ من استخدام الإذن.

الشكل 1. تحذير حول الوبر في "استوديو Android" لتذكير المطوّرين بسياسة Google Play بشأن إذن MANAGE_EXTERNAL_STORAGE

يمكنك طلب إذن MANAGE_EXTERNAL_STORAGE فقط عندما يتعذّر على تطبيقك الاستفادة بفعالية من واجهات برمجة التطبيقات التي تراعي الخصوصية أكثر، مثل إطار عمل الوصول إلى مساحة التخزين أو واجهة Media Store API. يجب أن يندرج استخدام تطبيقك للإذن ضمن الاستخدامات المسموح بها وأن يكون مرتبطًا مباشرةً بالوظيفة الأساسية للتطبيق. وإذا كان تطبيقك يتضمّن حالة استخدام مماثلة لأي مما يلي، من المرجّح أن يطلب إذن MANAGE_EXTERNAL_STORAGE:

  • تطبيقات إدارة الملفات
  • تطبيقات الاحتفاظ بنسخة احتياطية من الملفات واستعادتها
  • تطبيقات مكافحة الفيروسات
  • تطبيقات إدارة المستندات
  • البحث عن الملفات على الجهاز فقط
  • تشفير القرص والملفات
  • نقل البيانات من جهاز إلى جهاز