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

يمكن لمعظم التطبيقات التي تتطلّب الوصول إلى مساحة التخزين المشتركة اتّباع أفضل الممارسات المتعلّقة بمشاركة ملفات الوسائط ومشاركة ملفات غير ملفات الوسائط. ومع ذلك، فإنّ بعض التطبيقات لها حالة استخدام أساسية تتطلب الوصول الواسع النطاق إلى الملفات على الجهاز، ولكن لا يمكنها الوصول إليها بكفاءة باستخدام أفضل الممارسات المتعلقة بمساحة التخزين التي تراعي الخصوصية. يوفر 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 واجهة برمجة التطبيقات أو ملف مباشر المسارات: عند استخدام إطار عمل الوصول إلى مساحة التخزين، لا يمكنك الوصول إلى ملف أو دليل إلا إذا كان بإمكانك إجراء ذلك بدون امتلاك إذن 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 Studio تحذير lint الذي يظهر في الشكل 1. يذكرك هذا التحذير أنّ متجر Google Play يتضمّن التي تفرض قيودًا على استخدام الإذن.

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

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

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