- Хранение данных и файлов
- Внешняя карта памяти
- Состояние на текущий момент
- Что делать?
- Android 11
- Saving user data android что это
- Добавить Data Saver в область уведомлений
- Белый список приложений в Data Saver
- Android Data Saver и как его включить
- Содержание
- Что такое Android Data Saver?
- Как включить экономию трафика на Android в настройках
- Как включить Android Data Saver в быстрых настройках
- Как внести приложения в белый список для неограниченного использования данных в режиме экономии трафика
- Как отключить экономию трафика на 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» (см. выше).
Источник
Saving user data android что это
Приложения постоянно обновляются в фоновом режиме. Не все приложения должны периодически получать свежие данные, но некоторые из наиболее часто используемых приложений активны в фоновом режиме. Facebook и ваше почтовое приложение — два очевидных примера, которые приходят на ум. Фоновое обновление делает так, чтобы контент загружался быстрее, когда вы открываете приложение, но это может облагать налогом ваш тарифный план. Если вы находитесь в пути и хотите сохранить использование данных, Android 7.0 позволит вам ограничить использование фоновых данных приложениями. Эта функция представлена в виде простого переключателя, который можно включать и выключать в области уведомлений. Вы можете запретить приложениям обновляться в фоновом режиме, а также можете внести в белый список важные из них. Вот как.
Добавить Data Saver в область уведомлений
Хранитель данных можно включить в области уведомлений и в приложении «Настройки». Если вы откроете Chrome, вам будет предложено включить Data Saver. Вероятно, некоторые другие приложения могут иметь аналогичное приглашение.
Data Saver — это функция, к которой вам нужен быстрый доступ, поэтому Android 7.0 позволяет добавить переключатель в область уведомлений.
Чтобы добавить переключатель, опустите область «Уведомления» и нажмите «Изменить». Он развернется, чтобы показать дополнительные плитки / переключатели, которые вы можете добавить в область уведомлений. Перетащите Data Saver в раздел выше. Всякий раз, когда вы хотите включить Data Saver, просто нажмите на переключатель. Вам будет предложено подтвердить, хотите ли вы включить Data Saver, прежде чем он будет включен.
Белый список приложений в Data Saver
Data Saver ограничит фоновое обновление для всех приложений, кроме, по какой-то причине, Служб Google Play. Если вам действительно необходимо ограничивать данные, возможно, лучше отключить сотовые данные. Однако, если вам нужны определенные приложения, такие как Gmail, Chrome, Facebook и Twitter, для обновления в фоновом режиме, вам придется внести их в белый список.
Для этого откройте приложение «Настройки» и перейдите в раздел «Использование данных». Нажмите «Сохранение данных». На экране Data Saver вы увидите переключатель, чтобы включить или выключить его. Независимо от того, включен он или выключен, вы все равно можете использовать белый список приложений.
Нажмите «Неограниченный доступ к данным», и вы попадете в список всех приложений, установленных на вашем устройстве. Включите неограниченные данные для ваших основных приложений. Если вы хотите управлять доступом к данным для системных приложений, нажмите кнопку «Дополнительно» и выберите «Показать систему» в меню. Системные приложения теперь также появятся в списке, и вы можете включить для них неограниченные данные.
Вы можете включить Data Saver как для сотового соединения, так и для соединения WiFi.
Источник
Android Data Saver и как его включить
Android Экономия трафика гарантирует, что вы максимально эффективно используете свой тарифный план. Большинство приложений работают в фоновом режиме, потребляя ценные данные, чтобы вы были в курсе пос
Содержание
Android Экономия трафика гарантирует, что вы максимально эффективно используете свой тарифный план. Большинство приложений работают в фоновом режиме, потребляя ценные данные, чтобы вы были в курсе последних событий. Со встроенным Экономия трафика на Android вы можете решить, какие приложения получают неограниченный доступ к мобильным данным, а какие — не могут отправлять и получать данные в фоновом режиме. Продолжайте читать, чтобы узнать больше об Android Data Saver и о том, как включить его на вашем смартфоне:
НОТА: Это руководство относится к Android 10, и оно было создано на смартфоне Nokia 5.3. Если вы не знаете свою версию Android, прочтите статью Как проверить версию Android на смартфоне или планшете. Процедуры аналогичны для всех устройств под управлением Android, хотя вы можете столкнуться с небольшими отличиями в зависимости от производителя вашего устройства.
Что такое Android Data Saver?
В Экономия трафика — это функция, встроенная в Android, которая помогает контролировать потребление мобильных данных приложениями в фоновом режиме. В Экономия трафика Режим активен только тогда, когда вы не подключены к Wi-Fi, и гарантирует, что неактивные приложения и службы не будут использовать сотовые данные в фоновом режиме. Если в вашем тарифном плане ограничено количество данных, есть несколько способов использовать собственные приложения и функции Android, чтобы избежать дополнительных расходов.
Во-первых, рекомендуется проверить и ограничить использование мобильных данных. Затем вы можете ограничить доступ в Интернет для определенных приложений. Однако нельзя игнорировать, насколько проще включить Экономия трафика а затем занесите в белый список нужные вам приложения. Приложения с ограниченным доступом больше не потребляют сотовые данные в фоновом режиме; они используют мобильные данные только тогда, когда вы получаете к ним доступ. Даже когда они активны, они будут потреблять меньше данных. С другой стороны, это означает, что вы не получаете никаких обновлений из приложений с ограниченным доступом.
Например, если Android ограничен Экономия трафика, приложение Gmail больше не сообщает вам, когда вы получаете новые электронные письма, поскольку приложение больше не синхронизируется в фоновом режиме. Однако если вы получите доступ к приложению, оно начнет использовать мобильные данные для синхронизации и отображения новых писем. Это верно для всех приложений, отображающих уведомления о онлайн-контенте.
Если приложение находится в Неограниченные данные список (в белом списке), он работает нормально и игнорирует Экономия трафика Режим.
Как включить экономию трафика на Android в настройках
Чтобы включить Экономия трафика, перейдите в настройки Android и откройте Сеть и Интернет. На некоторых смартфонах, например Huawei, коснитесь Мобильная сеть вместо.
На Сеть и Интернет экран, нажмите на Использование данных.
На следующем экране вы можете найти Экономия трафика настройка с текущим статусом, показанным внизу — в нашем случае Выключено. Нажмите на него.
Вы можете увидеть переключатель в верхней части Экономия трафика экран Выключено. Нажмите на Использовать экономию трафика возможность включить Экономия трафика Режим.
Нажатие на опцию включает Экономия трафика режим и поворачивает переключатель На.
Вернитесь назад, и вы увидите, что это изменение также отражается на Использование данных экран: Data Saver’s статус сейчас На.
Как включить Android Data Saver в быстрых настройках
Если вы хотите контролировать использование данных, возможно, вам понадобится более быстрый способ активации Экономия трафика на вашем Android-смартфоне.
К счастью, на некоторых устройствах есть Быстрые настройки кнопку, которую вы можете использовать для этого. Чтобы получить доступ Быстрые настройки, проведите вниз от верхнего края экрана.
Проведите пальцем вниз еще раз, чтобы увидеть развернутый Быстрые настройки меню, в котором вы можете изменить быстрые настройки, доступные на вашем Android, и добавить Экономия трафика значок — если он еще не доступен.
В Экономия трафика Значок выглядит как прерванный круг. в Быстрые настройки, нажмите на Экономия трафика чтобы включить опцию.
Значок меняет цвет и отображает знак плюса посередине, чтобы показать, что Экономия трафика режим включен.
Вы можете увидеть аналогичный значок в верхней части экрана, поэтому убедитесь, что вы помните, что Экономия трафика активен и останавливает фоновые действия для большинства приложений и служб.
Как внести приложения в белый список для неограниченного использования данных в режиме экономии трафика
Самое замечательное в Android Экономия трафика заключается в том, что вы можете освободить любые приложения, которые считаете приоритетными, от ограничения их фоновых сотовых данных. Если вы ожидаете важного электронного письма или просто хотите узнать, кто упоминает вас в вашем любимом канале социальных сетей, вы можете добавить жизненно важное приложение в Неограниченные данные список. Добавление приложения в белый список позволяет ему продолжать использовать мобильные данные в фоновом режиме, пока Экономия трафика горит.
Чтобы внести приложения в белый список и добавить их в Неограниченные данные список, доступ Сеть и Интернет настройки, перейдите в Использование данныхи нажмите на Экономия трафика — как показано во втором разделе этого руководства.
В качестве альтернативы, если вы включили Экономия трафика быстрой настройки, вы также можете нажать и удерживать его, чтобы перейти к Экономия трафика экран. Оказавшись там, нажмите на Неограниченные данные.
На нашем Android-устройстве Услуги Перевозчика а также Сервисы Google Play по умолчанию являются единственными приложениями, которым разрешено использовать неограниченное количество данных, когда Экономия трафика горит. На Неограниченные данные экрана, коснитесь любого приложения, чтобы включить его переключатель и позволить ему работать в фоновом режиме.
Используйте трехточечный значок в правом верхнем углу, чтобы Показать систему приложения на Неограниченные данные список. Вы также можете выбрать их для неограниченного использования фоновых данных.
Имейте в виду, что разрешение слишком большому количеству приложений и служб использовать мобильные данные в фоновом режиме сводит на нет цель Экономия трафика.
Как отключить экономию трафика на Android
Выключить Экономия трафика, доступ Настройки. На некоторых устройствах вы можете получить запись с Экономия трафика значок вверху. Нажмите на него.
Запись расширяется, сообщая вам Экономия трафика включен, поэтому фоновые данные доступны только через Wi-Fi. Нажмите на Выключи отключить Экономия трафика, и запись исчезнет.
Если вы не получили эту запись, от Настройки, вы можете получить доступ Сеть и Интернет, тогда Использование данныхи нажмите на Экономия трафика — как показано во втором разделе этого руководства. Нажмите на Использовать экономию трафика , чтобы выключить переключатель и отключить функцию.
Если вы можете добавить Экономия трафика к Быстрые настройки, вы также можете провести вниз и нажать на его значок, чтобы отключить его.
Какие приложения вы добавили в белый список в режиме экономии трафика?
Если у вас нет безлимитного тарифного плана, Android Экономия трафика незаменим для оптимизации использования мобильных данных на вашем устройстве. Чтобы получить лучшее соотношение цены и качества, используйте его и выберите, каким приложениям разрешено использовать сотовые данные, синхронизируя их в фоновом режиме. Мы добавили Gmail к Неограниченные данные list на нашем Android-смартфоне, потому что наша рабочая электронная почта является приоритетом. А что насчет тебя? Какие приложения вы выбрали в качестве приоритетных и почему? Дайте нам знать в комментариях ниже.
Источник