يمكن لمعظم التطبيقات التي تتطلب الوصول إلى مساحة التخزين المشتركة اتّباع أفضل الممارسات لـ مشاركة ملفات الوسائط ومشاركة الملفات غير المرثبطة بالوسائط. ومع ذلك، تتضمّن بعض التطبيقات حالة استخدام أساسية تتطلب الوصول على نطاق واسع إلى الملفات على الجهاز، ولكن لا يمكنها الوصول إليها بكفاءة باستخدام أفضل ممارسات التخزين التي تراعي الخصوصية. يوفّر Android إذن وصول خاصًا للتطبيقات يُسمى الوصول إلى كل الملفات لهذه الحالات.
على سبيل المثال، قد تتطلب حالة الاستخدام الأساسية لتطبيق مكافحة الفيروسات إجراء فحص منتظم للعديد من الملفات في أدلة مختلفة. إذا كان هذا الفحص يتطلب تفاعلات متكررة من المستخدم لاختيار الأدلة باستخدام أداة اختيار الملفات في النظام، فإنّ ذلك يوفّر تجربة سيئة للمستخدم. تتطلب حالات الاستخدام الأخرى، مثل تطبيقات إدارة الملفات وتطبيقات الاحتفاظ بنسخة احتياطية من الملفات واستعادتها وتطبيقات إدارة المستندات، اعتبارات مماثلة.
طلب إذن الوصول إلى كل الملفات
يمكن للتطبيق أن يطلب من المستخدم إذن الوصول إلى كل الملفات من خلال تنفيذ ما يلي:
- التعريف بإذن
MANAGE_EXTERNAL_STORAGEفي البيان. - استخدام إجراء intent
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.
استدعاء نشاط إدارة مساحة التخزين لتطبيق آخر
في الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، يمكن للتطبيقات التي لديها إذن
MANAGE_EXTERNAL_STORAGE
وإذن
QUERY_ALL_PACKAGES
، مثل تطبيقات إدارة الملفات، استخدام
getManageSpaceActivityIntent()
لإرسال المستخدمين إلى نشاط مخصّص لإدارة مساحة التخزين
في تطبيق آخر.
تأخذ طريقة getManageSpaceActivityIntent() اسم حزمة ورمز طلب، وتعرض أحد الخيارَين التاليَين:
PendingIntent، إذا كان التطبيق الذي يحمل اسم الحزمة المحدّد قد حدّد نشاطًا مخصّصًا "لإدارة مساحة التخزين" يمكن لتطبيق إدارة الملفات الذي استدعى طريقةgetManageSpaceActivityIntent()استدعاء intent الذي تم عرضه لإرسال المستخدمين إلى النشاط المخصّص.null، إذا لم يحدّد التطبيق الذي يحمل اسم الحزمة المحدّد نشاطًا "لإدارة مساحة التخزين"
تفعيل إذن MANAGE_EXTERNAL_STORAGE للاختبار
لاستكشاف تأثير إذن MANAGE_EXTERNAL_STORAGE على تطبيقك، يمكنك تفعيل الإذن للاختبار. لإجراء ذلك، شغِّل الأمر التالي على الجهاز المتصل بجهاز الاختبار:
adb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow
إشعار من Google Play
يقدّم هذا القسم إشعارًا للمطوّرين الذين ينشرون تطبيقات على Google Play.
للحدّ من الوصول على نطاق واسع إلى مساحة التخزين المشتركة، عدّل متجر Google Play سياسته لتقييم التطبيقات التي تستهدف الإصدار 11 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 30) أو الإصدارات الأحدث وتطلب إذن الوصول إلى كل الملفات من خلال إذن MANAGE_EXTERNAL_STORAGE تسري هذه السياسة اعتبارًا من مايو 2021.
عندما يستهدف تطبيقك الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث ويفصح عن إذن MANAGE_EXTERNAL_STORAGE، يعرض "استوديو Android" تحذير أداة lint الذي يظهر في الشكل 1. يذكّرك هذا التحذير بأنّ متجر Google Play لديه سياسة تحدّ من استخدام الإذن.
MANAGE_EXTERNAL_STORAGE
لا تطلب إذن MANAGE_EXTERNAL_STORAGE إلا إذا تعذّر على تطبيقك
الاستفادة بفعالية من واجهات برمجة التطبيقات التي تراعي الخصوصية أكثر، مثل إطار عمل
الوصول إلى مساحة التخزين أو واجهة برمجة التطبيقات
MediaStore API. يجب أن يندرج استخدام التطبيق للإذن ضمن الاستخدامات المسموح بها وأن يكون مرتبطًا مباشرةً بالوظيفة الأساسية له. إذا كان تطبيقك يتضمّن حالة استخدام مشابهة لأي مما يلي، فمن المحتمل أن يتمكّن من طلب إذن MANAGE_EXTERNAL_STORAGE:
- تطبيقات إدارة الملفات
- تطبيقات الاحتفاظ بنسخة احتياطية من الملفات واستعادتها
- تطبيقات مكافحة الفيروسات
- تطبيقات إدارة المستندات
- البحث عن الملفات على الجهاز فقط
- تشفير القرص والملفات
- نقل البيانات من جهاز إلى آخر