تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكن لمعظم التطبيقات التي تتطلّب الوصول إلى مساحة التخزين المشتركة اتّباع أفضل الممارسات المتعلّقة بمشاركة ملفات الوسائط ومشاركة الملفات غير المرتبطة بالوسائط. ومع ذلك، تتضمّن بعض التطبيقات حالة استخدام أساسية تتطلّب الوصول إلى نطاق واسع من الملفات على الجهاز، ولكن لا يمكنها الوصول إليها بكفاءة باستخدام أفضل الممارسات المتعلّقة بمساحة التخزين التي تراعي الخصوصية.
يوفّر نظام التشغيل Android إذن وصول خاص للتطبيقات يُسمى الوصول إلى جميع الملفات لهذه الحالات.
على سبيل المثال، قد تتطلّب حالة الاستخدام الأساسية لتطبيق مكافحة الفيروسات إجراء عمليات فحص منتظمة للعديد من الملفات في مختلف الدلائل. إذا كان هذا الفحص يتطلّب تفاعلات متكرّرة من المستخدم لاختيار الدلائل باستخدام أداة اختيار الملفات في النظام، سيؤدي ذلك إلى تجربة سيئة للمستخدم. تتطلّب حالات الاستخدام الأخرى، مثل تطبيقات إدارة الملفات وتطبيقات الاحتفاظ بنسخة احتياطية والاستعادة وتطبيقات إدارة المستندات، اعتبارات مماثلة.
طلب إذن الوصول إلى كل الملفات
يمكن لأي تطبيق طلب إذن الوصول إلى جميع الملفات من المستخدم من خلال تنفيذ ما يلي:
استخدِم إجراء النية
ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION لتوجيه المستخدمين إلى صفحة إعدادات النظام حيث يمكنهم تفعيل
الخيار التالي لتطبيقك: السماح بالوصول إلى جميع الملفات.
إذن الوصول إلى الدليل الجذر لكل من محرك أقراص USB أثناء التنقل (OTG) وبطاقة SD
إذن الكتابة في جميع أدلة التخزين الداخلي باستثناء /Android/data/ و/sdcard/Android ومعظم الأدلة الفرعية ضمن /sdcard/Android تتضمّن إذن الكتابة هذا إمكانية الوصول إلى مسار الملف المباشر.
ومع ذلك، لا يمكن للتطبيقات التي تم منحها هذا الإذن الوصول إلى الأدلة الخاصة بالتطبيقات التي تخص تطبيقات أخرى، لأنّ هذه الأدلة تظهر كأدلة فرعية من Android/data/ على وحدة تخزين.
عندما يملك التطبيق إذن MANAGE_EXTERNAL_STORAGE، يمكنه الوصول إلى هذه الملفات والأدلة الإضافية باستخدام واجهة برمجة التطبيقات MediaStore أو مسارات الملفات المباشرة. عند استخدام إطار عمل الوصول إلى مساحة التخزين، لا يمكنك الوصول إلى ملف أو دليل إلا إذا كان بإمكانك إجراء ذلك بدون الحصول على إذن MANAGE_EXTERNAL_STORAGE.
تتلقّى الطريقة 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 Studio تحذيرًا من أداة lint يظهر في الشكل 1. يذكّرك هذا التحذير بأنّ "متجر Google Play" لديه سياسة تحدّ من استخدام الإذن.
الشكل 1. تحذير Lint في "استوديو Android" يذكّر المطوّرين بسياسة Google Play بشأن إذن MANAGE_EXTERNAL_STORAGE.
لا تطلب الإذن MANAGE_EXTERNAL_STORAGE إلا إذا تعذّر على تطبيقك الاستفادة بفعالية من واجهات برمجة التطبيقات التي تراعي الخصوصية أكثر، مثل إطار عمل الوصول إلى مساحة التخزين أو واجهة MediaStore API. يجب أن يندرج استخدام تطبيقك للإذن ضمن الاستخدامات المسموح بها وأن يكون مرتبطًا مباشرةً بالوظيفة الأساسية للتطبيق. إذا كان تطبيقك يتضمّن حالة استخدام مشابهة لأي مما يلي، من المحتمل أن يتمكّن من طلب الإذن MANAGE_EXTERNAL_STORAGE:
تطبيقات إدارة الملفات
تطبيقات الاحتفاظ بنسخة احتياطية من الملفات واستعادتها
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["The majority of apps that require shared storage access can follow the best\npractices for [sharing media\nfiles](/training/data-storage/use-cases#share-media-all) and [sharing non-media\nfiles](/training/data-storage/use-cases#sharing-non-media-files). However, some\napps have a core use case that requires broad access to files on a device, but\ncan't access them efficiently using the privacy-friendly storage best practices.\nAndroid provides a special app access called *all-files access* for these\nsituations.\n\nFor example, an anti-virus app's primary use case might require regular scanning\nof many files across different directories. If this scanning requires repeated\nuser interactions to select directories using the system file picker, it\nprovides a poor user experience. Other use cases---such as file manager apps,\nbackup and restore apps, and document management apps---require similar\nconsiderations.\n\nRequest all-files access\n\nAn app can request all-files access from the user by doing the following:\n\n1. Declare the [`MANAGE_EXTERNAL_STORAGE`](/reference/android/Manifest.permission#MANAGE_EXTERNAL_STORAGE) permission in the manifest.\n2. Use the [`ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION`](/reference/android/provider/Settings#ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) intent action to direct users to a system settings page where they can enable the following option for your app: **Allow access to manage all files**.\n\nTo determine whether your app has been granted the `MANAGE_EXTERNAL_STORAGE`\npermission, call\n[`Environment.isExternalStorageManager()`](/reference/android/os/Environment#isExternalStorageManager()).\n\nOperations permitted by MANAGE_EXTERNAL_STORAGE\n\nThe `MANAGE_EXTERNAL_STORAGE` permission grants the following:\n\n- Read and write access to all files within [shared\n storage](/training/data-storage/shared).\n\n | **Note:** The `/sdcard/Android/media` directory is part of shared storage.\n- Access to the contents of the\n [`MediaStore.Files`](/reference/android/provider/MediaStore.Files) table.\n\n- Access to the root directory of both the USB on-the-go (OTG) drive and the SD\n card.\n\n- Write access to all internal storage directories except\n `/Android/data/`, `/sdcard/Android`, and most subdirectories of\n `/sdcard/Android`. This write access includes [direct file\n path](/training/data-storage/shared/media#direct-file-paths) access.\n\n Apps that are granted this permission still can't access the [app-specific\n directories](/training/data-storage/app-specific) that belong to other apps,\n because these directories appear as subdirectories of `Android/data/` on a\n storage volume.\n\nWhen an app has the `MANAGE_EXTERNAL_STORAGE` permission, it can access these\nadditional files and directories using either the\n[`MediaStore`](/reference/android/provider/MediaStore) API or [direct file\npaths](/training/data-storage/shared/media#direct-file-paths). When you use the\n[Storage Access Framework](/training/data-storage/shared/documents-files),\nhowever, you can only access a file or directory if you can do so without\nhaving the `MANAGE_EXTERNAL_STORAGE` permission.\n\nInvoke another app's storage management activity\n\nOn Android 12 (API level 31) and higher, apps that have both the\n[`MANAGE_EXTERNAL_STORAGE`](/reference/android/Manifest.permission#MANAGE_EXTERNAL_STORAGE)\npermission and the\n[`QUERY_ALL_PACKAGES`](/reference/android/Manifest.permission#QUERY_ALL_PACKAGES)\npermission---such as file management apps---can use the\n[`getManageSpaceActivityIntent()`](/reference/android/os/storage/StorageManager#getManageSpaceActivityIntent(java.lang.String,%20int))\nto send users to another app's [custom space management\nactivity](/training/data-storage/app-specific#create-storage-management-activity).\n\nThe `getManageSpaceActivityIntent()` method takes in a package name and a\nrequest code, and it returns one of the following:\n\n- A [`PendingIntent`](/reference/android/app/PendingIntent), if the app with the specified package name has defined a custom \"manage space\" activity. The file management app that called the `getManageSpaceActivityIntent()` method can then invoke the returned intent to send users to the custom activity.\n- `null`, if the app with the specified package name doesn't define a \"manage space\" activity.\n\nEnable MANAGE_EXTERNAL_STORAGE for testing\n\nTo explore how the `MANAGE_EXTERNAL_STORAGE` permission affects your app, you\ncan enable the permission for testing. To do so, run the following\ncommand on the machine that's connected to your test device: \n\n```\nadb shell appops set --uid PACKAGE_NAME MANAGE_EXTERNAL_STORAGE allow\n```\n\nGoogle Play notice\n\nThis section provides a notice for developers who publish apps on Google Play.\n\nTo limit broad access to shared storage, the Google Play store has [updated its\npolicy](https://support.google.com/googleplay/android-developer/answer/10467955)\nto evaluate apps that target Android 11 (API level 30) or higher and request\nall-files access through the `MANAGE_EXTERNAL_STORAGE` permission. This policy\nis in effect as of May 2021.\n\nWhen your app targets Android 11 or higher and it declares the\n`MANAGE_EXTERNAL_STORAGE` permission, Android Studio shows the lint warning that\nappears in figure 1. This warning reminds you that the Google Play store has a\npolicy that limits usage of the permission.\n**Figure 1.** Lint warning in Android Studio that reminds developers about the Google Play policy regarding the `MANAGE_EXTERNAL_STORAGE` permission.\n\nRequest the `MANAGE_EXTERNAL_STORAGE` permission only when your app\ncan't effectively make use of the more privacy-friendly APIs, such as the [Storage\nAccess Framework](/training/data-storage/shared/documents-files) or the [Media\nStore API](/training/data-storage/shared/media). Your app's usage\nof the permission must fall within permitted uses and must be directly tied to\nthe core functionality of the app. If your app includes a use case\nsimilar to any of the following, it's likely that it can request the\n`MANAGE_EXTERNAL_STORAGE` permission:\n\n- File managers\n- Backup and restore apps\n- Anti-virus apps\n- Document management apps\n- On-device file search\n- Disk and file encryption\n- [Device-to-device data migration](/guide/topics/data/testingbackup#TestingTransfer)"]]