Media storage data android

Хранение данных и файлов

В целом хранение файлов и данных можно условно разделить на две группы: во внутреннем или внешнем хранилище. Но разница между ними довольна тонка. В целом политика Гугла в отношение данных ужесточается с каждой версии системы.

Android поддерживает различные варианты хранения данных и файлов.

  • Специфичные для приложения файлы. Доступ к файлам имеет только приложение, их создавшее. Файлы могут находиться во внутреннем и внешнем хранилище. У других приложений нет доступа (кроме случаев, когда файлы хранятся на внешнем хранилище). Методы getFilesDir(), getCacheDir(), getExternalFilesDir(), getExternalCacheDir(). Разрешений на доступ не требуется. Файлы удаляются, когда приложение удаляется пользователем.
  • Разделяемое хранилище. Приложение может создавать файлы, которыми готово поделиться с другими приложениями — медиафайлы (картинки, видео, аудио), документы. Для медифайлов требуется разрешение READ_EXTERNAL_STORAGE или WRITE_EXTERNAL_STORAGE.
  • Настройки. Хранение простых данных по принципу ключ-значение. Доступно внутри приложения. Реализовано через Jetpack Preferences. Настройки удаляются, когда приложение удаляется пользователем.
  • Базы данных. Хранение данных в SQLite. На данный момент реализовано через библиотеку Room. Доступ только у родного приложения.

В зависимости от ваших потребностей, нужно выбрать нужный вариант хранения данных.

Следует быть осторожным при работе с внутренним и внешним хранилищем. Внутренне хранилище всегда есть в системе, но оно может быть не слишком большим по объёму. Вдобавок к внутреннему хранилищу, устройство может иметь внешнее хранилище. В старых моделях таким хранилищем выступала съёмная SD-карта. Сейчас чаще используют встроенную и недоступную для извлечения флеш-память. Если ваше приложение слишком большое, можно попросить систему устанавливать программу во внешнее хранилище, указав просьбу в манифесте.

В разных версиях Android требования к разрешению для работы с внешним хранилищем постоянно менялись. На данный момент (Android 10, API 29) требования выглядят следующим образом.

Приложение может иметь доступ к собственным файлам, которые находятся во внешнем хранилище. Также может получить доступ к определённым общим файлам на внешнем хранилище.

Доступ к общим файлам достигается через FileProvider API или контент-провайдеры.

Для просмотра файлов через студию используйте инструмент Device File Explorer.

Внешняя карта памяти

Когда появились первые устройства на Android, то практически у всех были внешние карточки памяти, которые вставлялись в телефон. Обычно там хранили фотки, видео и свои файлы. Всё было понятно — были различные методы для доступа к файловой системе. А потом началась чехарда. В телефонах также была и собственная «внешняя» память. Она вроде как и внешняя, но вставлена на заводе и вытащить её пользователь не мог, т.е. практически внутренняя. Затем пошла мода на телефоны, у которых была только такая внутреннее-внешняя карта. Пользователи поворчали, но привыкли. Сейчас встречаются оба варианта. Как правило, у телефонов с спрятанной картой больше памяти и выше степень водонепроницаемости.

Подобные фокусы с картой породили и другую проблему — Гугл озаботился безопасностью файлов и стала думать, как осложнить жизнь разработчику. С выходом каждой новой версии системы компания то давала добро на полный доступ к карточке, то ограничивала, то давала права с ограничениями, то откатывала свои решения назад. Короче, запутались сами и запутали всех.

Попробуем немного разобраться с этим зоопарком. Но помните, что процесс путаницы продолжается.

При подготовке материала я опирался на письма некоторых читателей сайта, которые присылали свои мысли по этому поводу. Спасибо им за структуризацию материала.

Вот что я (кажется) понял, попытавшись загрузить картинку с внешней SD карточки.

External это не External
«EXTERNAL_STORAGE» называется так не потому, что это внешняя память по отношению к устройству, а потому что она выглядит как внешняя память для компьютера, если устройство подключить кабелем к компьютеру. Причём именно выглядит, потому что обмен идёт по протоколу MTP – устройство только показывает компьютеру список папок и файлов, а при необходимости открыть или скопировать файл он специально загружается на компьютер, в отличие от настоящей флешки, файлы которой становятся файлами в файловой системе самого компьютера. Обмен по MTP позволяет устройству продолжать работать, когда оно подключено к компьютеру.

Emulated это не Emulated
Сначала я пытался прочесть файл с карточки на эмуляторе (из этого так ничего и не вышло). Функция getExternalStorageDirectory() давала мне /storage/emulated/0, и я думал, что «emulated» – это потому что на эмуляторе. Но когда я подцепил реальный планшет, слово «emulated» никуда не исчезло. Я стал рыться в интернете и обнаружил, что «Emulated storage is provided by exposing a portion of internal storage through an emulation layer and has been available since Android 3.0.» – то есть это просто кусок внутренней памяти, которая путём какой-то эмуляции делается доступной для пользователя, в отличие от собственно внутренней памяти.

Читайте также:  Шареман для андроида что это такое

При этом с точки зрения системы доступная для пользователя папка называется /storage/emulated/0, а при подключении к компьютеру по USB это просто одна из двух главных папок устройства – у меня в Windows Explorer она называется Tablet. Вторая папка у меня называется Card, и это и есть настоящая внешняя карточка.

Нет стандартных средств добраться из приложения до файлов на внешней карточке. Все попытки добраться до настоящей внешней карточки делаются с помощью неких трюков. Самое интересное, что я нашел, это статья на http://futurewithdreams.blogspot.com/2014/01/get-external-sdcard-location-in-android.html — парень читает таблицу смонтированных устройств /proc/mounts, таблицу volume daemons /system/etc/vold.fstab, сравнивает их и выбирает те тома, которые оказываются съёмными (с помощью Environment.isExternalStorageRemovable()).

Оказалось, что несистемным приложениям в принципе запрещено напрямую обращаться к съёмной карточке! Похоже, что это было так всегда, но вот начиная с версии Android 6 Marshmallow написано: внешняя карточка может быть определена как Portable либо Adoptable. Adoptable – это как бы «усыновляемая» память которая может быть «adopted», то есть взята в систему (примерно как кот с улицы в дом – это тоже называется to adopt) и использована как внутренняя. Для этого ее надо особым образом отформатировать и не вынимать, иначе не факт, что система продолжит нормально работать.

Portable – это нормальная съёмная карточка, но несистемным приложениям запрещено обращаться из программ к файлам на ней! Вот что написано в https://source.android.com/devices/storage/traditional.html:

Android 6.0 supports portable storage devices which are only connected to the device for a short period of time, like USB flash drives. When a user inserts a new portable device, the platform shows a notification to let them copy or manage the contents of that device. In Android 6.0, any device that is not adopted is considered portable. Because portable storage is connected for only a short time, the platform avoids heavy operations such as media scanning. Third-party apps must go through the Storage Access Framework to interact with files on portable storage; direct access is explicitly blocked for privacy and security reasons.

Если я правильно понял, этот самый Storage Access Framework позволяет работать с документом на карточке через диалог (открыть файл/сохранить файл), а вот прочитать или записать файл на карточке непосредственно из программы невозможно.

Общий вывод – реально из программы можно работать только с файлами на предоставляемой пользователю части встроенной памяти устройства, а на съёмной карточке – нет.

Это напоминает войну Microsoft с пользователями и разработчиками по поводу диска C:, компания уговаривала не устраивать беспорядок в корне этого диска, а ещё лучше — перенести свои файлы на другой диск. Но явных запретов не было.

Состояние на текущий момент

Гугл утверждает, что с версии Android 10 Q стандартный доступ к файлам будет прекращён. Ещё в Android 4.4 появился Storage Access Framework, который и должен стать заменой для работы с файлами.

Методы Environment.getExternalStorageDirectory() и Environment.getExternalStoragePublicDirectory() признаны устаревшими и будут недоступны. Даже если они будут возвращать корректные значения, ими вы не сможете воспользоваться.

В Android 7.0 добавили исключение FileUriExposedException, чтобы разработчики перестали использовать схему file://Uri.

Можно создавать файлы в корневой папке карточки при помощи Environment.getExternalStorageDirectory(), а также папки с вложенными файлами. Если папка уже существует, то у вас не будет доступа на запись (если это не ваша папка).

Если вы что-то записали, то сможете и прочитать. Чужое читать нельзя.

Кстати, разрешения на чтение и запись файлов не требуются, а READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE объявлены устаревшими.

Другие приложения не могут получить доступ к файлам вашего приложения. Файлы, которые вы создали через getExternalFilesDir(), доступны через Storage Access Framework, кроме файлов, созданных в корне карточки (что-то я совсем запутался). Ещё можно дать доступ через FileProvider.

При подключении USB-кабеля через getExternalFilesDir(), вы можете увидеть свои файлы и папки, а также файлы и папки пользователя. При этом файлы и папки пользователя на корневой папке вы не увидите. Вам не поможет даже adb или Device File Explorer студии.

Что делать?

Пользуйтесь методами класса Context, типа getExternalFilesDir(), getExternalCacheDir(), getExternalMediaDirs(), getObbDir() и им подобными, чтобы найти место для записи.

Читайте также:  Антивирус против слежки андроид

Используйте Storage Access Framework.

Используйте MediaStore для мультимедийных файлов.

Используйте FileProvider, чтобы файлы были видимы другим приложениям через ACTION_VIEW/ACTION_SEND.

Android 10: Появился новый флаг android:allowExternalStorageSandbox=»false» и метод Environment.isExternalStorageSandboxed() для работы с песочницей. Флаг android:requestLegacyExternalStorage=»true» для приложений, которые ещё используют старую модель доступа к файлам.

Как временное решение можно добавить в блок манифеста application атрибут android:requestLegacyExternalStorage=»true», чтобы доступ к файлам был как раньше в Android 4.4-9.0.

Android 11

Если вы создаёте файловый менеджер, то ему нужны возможности для просмотра файлов. Для этого следует установить разрешение MANAGE_EXTERNAL_STORAGE или использовать атрибут android:requestLegacyExternalStorage=»true» (см. выше).

Источник

Media Storage on Android: Can You Disable Data in Media Storage

Media Storage is an important system process on Android phones. It makes other operations on your device possible by using the service. If you disable Media Storage on your Android phone, you will surely find yourself in trouble. Read on to learn everything about Media Storage and learn how to recover data from your device using EaseUS data recovery software if there is data loss.

Table of Contents

About the Author

Reviews and Awards

What Is Media Storage on Android

Media Storage is a system process that is needed when you view, download, play, and stream images, videos, audio files, and other media files. As a system service, it is not available from your phone desktop. Then where is Media Storage in Android? You can access it from your phone:

Step 1. Go to «Settings» > «Apps».

Step 2.В Click the «More (three dots)» button and choose «Show system processes». (the options may be slightly different on different phone models).

Step 3. After you open «Media Storage», there are always several options shown, like Disable and Force Stop (when ‘unfortunately app has stopped’ error occurs, you can try to force stop it). If you click «Storage», you will see another two options: Clear Data and Clear Cache.В

Without knowing the details about these options, some users attempt to disable Media Storage or clear data in Media Storage, aiming to free up space on Android or save battery, only to find that their device cannot work properly or some files are missing. Can you disable Media Storage? Will clear data delete your photos, videos, or audio files? Read on to get the answer.

Frequently Asked Questions About Media Storage on Android

Many users feel confused about the options in Media Storage, here we will explain some of them in detail.

1. Can You Disable Media Storage?

No, you can’t. As mentioned, this system process is needed when you download, play, or stream media like videos and audio files. If you disable the options, you won’t be able to do things like viewing photos/videos, playing videos/music, and taking photos. Therefore, you cannot disable Media Storage with the purpose of extending the battery life of your device.

2. How to Enable Media Storage on Android?

If you have disabled Media Storage on your Android phone, you should re-enable it to make sure you can use your device as normal.

To enable Media Storage on Android:

Step 1: Go to «Settings» > «Apps» (> «Apps»).

Step 2: Click the three dots in the top-right corner and choose «Show system processes».

Step 3: You can search for «Media Storage» and click the option.

Step 4: Click «Enable» to re-enable the service.

3. Will Clear Data Remove Your Media Files?

No, it won’t. When you click «Clear Data» in Media Storage, all the app’s data, including the files produced during the using of the service, settings, accounts, database, and more will be deleted permanently (if you want to recover the deleted files, you can use the Android data recovery software — EaseUS MobiSaver to have a try). It WON’T remove the media files stored on your device like your photos, videos, and audio files. If the media files are gone or missing after you choose «Clear data», it’s probably because you have accidentally disabled Media Storage. Have a check on the option and make sure Media Storage is enabled.

How to Recover Deleted Media Storage Data on Android?

If you are sure that your media files are lost after your misoperation under Media Storage, don’t worry. You still have the chance to recover them. Here we’ve listed 4 methods, try them one by one to recover your deleted Android data.

Читайте также:  Популярные мелодии для андроида

Method 1: Restart Your Android Device

If you’re trying to get back all the sounds, simply restart your phone and this will bring all ringtones and gallery pictures back. It’s a matter of the Android OS restoring metadata during the restart.

Method 2: Sync Lost Data from Your Google Account

Tap on «settings» > «Applications» > «Accounts» > «Google account», uncheck the boxes for sync and check the boxes again. In this way, the cleared data is synced again and will reappear in Media Storage.

Method 3: Find Cleared data in lost.dir folder

If reboot your Android device does not help you find lost data files back, you can try to locate lost.dir folder and look for the lost files there.

Method 4: Download Android data recovery software

Still, none of the methods above finds your lost media files? It’s time to apply the best Android data recovery software to recover deleted files from media storage.

Option 1: Recover Lost Files from Android SD Card

If the files lost are saved on your Android SD card, you can apply the hard drive recovery software — EaseUS Data Recovery Wizard to recover them.

Step 1.В Download EaseUS Data Recovery Wizard — the dependable SD card recovery software for Windows on your PC. Connect the SD card to your computer with either a card reader or by attaching the device that contains it. Launch the software so you can see the SD card from the disk list presented on the interface. Select the SD card and click «Scan».

Step 2. The scan process shouldВ runВ quickly to find the files that were recently deleted,В items emptied from the Recycle Bin, andВ files thatВ lostВ file names. During the course of scanning the SD card, you can start checking the results from the leftside tree-view pane, or simply use the Filter function to show up only the pictures, doucments, videos, emails and so on.

Step 3. Double-click on a file will allow you to preivew its content. At last, select the desired files you wish to recover and click the Recover button to get them all back. When you’re asked to choose a location to save the recovered files, do not use the SD card but another drive, to avoid data overwriting.

Option 2: Recover Lost Files from Android Internal Storage

To recover your lost photos, videos, or songs from the internal storage of your Android phone, you will need the Android data recovery software — EaseUS MobiSaver. (The prerequisite to recovering data from your Android device is that the phone has been rooted.)

Step 1:В Download and install EaseUS MobiSaver for Android on a Windows PC.

Step 2: Connect your Android device to the computer with a USB cable.

Step 3: Run EaseUS MobiSaver for Android and click «Start» button.

Step 4: Scan Android to find all lost data files.

Step 5:В Browse the files in the categories of Gallery, videos, audio and more, and click «Recover» button to get them all back.

The Bottom Line

Knowing the importance of Media Storage, you won’t easily disable this system process next time you want to clean up your Android phone or save battery on your device. To prevent yourself from disabling needed system processes, you can hide the system processes via Settings. Hope the information presented in this article is useful to you.

Was This Page Helpful?

Author Jean has been writing tech articles since she was graduated from university. She has been part of the EaseUS team for over 5 years. Her special focuses are data recovery, disk partitioning, data space optimization, data backup and Mac OS. By the way, she’s an aviation fan!

EaseUS Data Recovery Wizard is a powerful system recovery software, designed to enable you to recover files you’ve deleted accidentally, potentially lost to malware or an entire hard drive partition.

EaseUS Data Recovery Wizard is the best we have seen. It’s far from perfect, partly because today’s advanced disk technology makes data-recovery more difficult than it was with the simpler technology of the past.

EaseUS Data Recovery Wizard Pro has a reputation as one of the best data recovery software programs on the market. It comes with a selection of advanced features, including partition recovery, formatted drive restoration, and corrupted file repair.

Источник

Оцените статью