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

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

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

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

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

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