يمكن لمعظم التطبيقات التي تتطلّب الوصول إلى مساحة التخزين المشتركة اتّباع أفضل الممارسات المتعلّقة بمشاركة ملفات الوسائط ومشاركة ملفات غير ملفات وسائط. ومع ذلك، فإنّ بعض التطبيقات لها حالة استخدام أساسية تتطلب الوصول الواسع النطاق إلى الملفات على الجهاز، ولكن لا يمكنها الوصول إليها بكفاءة باستخدام أفضل الممارسات المتعلقة بمساحة التخزين التي تراعي الخصوصية. يقدّم نظام التشغيل Android إذن وصول خاصًا للتطبيقات يُسمى الوصول إلى كل الملفات في هذه الحالات.
على سبيل المثال، قد تتطلّب حالة الاستخدام الأساسية لتطبيق مكافحة الفيروسات إجراء عمليات فحص منتظمة لكثير من الملفات في أدلة مختلفة. إذا كانت عملية البحث هذه تتطلّب تفاعلات متكرّرة من المستخدم لاختيار الدلائل باستخدام أداة اختيار ملفات النظام، فإنّها تقدّم تجربة استخدام سيئة. تتطلّب حالات الاستخدام الأخرى، مثل تطبيقات إدارة الملفات وتطبيقات الاحتفاظ بنسخة احتياطية والاستعادة وتطبيقات إدارة المستندات، مراعاة أمور مماثلة.
طلب الوصول إلى كل الملفات
يمكن للتطبيق طلب الوصول إلى جميع الملفات من المستخدم باتّباع الخطوات التالية:
- حدِّد الإذن
MANAGE_EXTERNAL_STORAGE
في البيان. - استخدِم رمز
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()
استدعاء الهدف الذي تم إرجاعه لإرسال المستخدمين إلى النشاط المخصّص.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
إلا إذا تعذّر على تطبيقك الاستفادة بفعالية من واجهات برمجة التطبيقات التي تراعي الخصوصية أكثر، مثل إطار عمل الوصول إلى
مساحة التخزين أو Media
Store API. يجب أن يندرج استخدام تطبيقك
للإذن ضمن الاستخدامات المسموح بها وأن يكون مرتبطًا مباشرةً
بالوظيفة الأساسية للتطبيق. إذا كان تطبيقك يتضمّن حالة استخدام
تشبه أيًا مما يلي، من المرجّح أن يتمكّن من طلب الإذن
MANAGE_EXTERNAL_STORAGE
:
- تطبيقات إدارة الملفات
- تطبيقات الاحتفاظ بنسخة احتياطية من الملفات واستعادتها
- تطبيقات مكافحة الفيروسات
- تطبيقات إدارة المستندات
- البحث في الملفات على الجهاز
- تشفير القرص والملفات
- نقل البيانات من جهاز إلى آخر