Архив рубрики: Разное

Запись и чтение файла (внутренняя память устройства)

Приложение может сохранять какую-то информацию в файлах, которые могут храниться как на SD-карте, так и во «внутренней» памяти устройства. Ниже мы рассмотрим работу с файлами в случае второго варианта, то есть когда файл хранится в памяти смартфона.

Как программно получить версию ОС Android и другую информацию об устройстве

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

Файл манифеста AndroidManifest.xml

Любое Андроид-приложение включает в себя файл описания или файл манифеста — AndroidManifest.xml. Манифест содержит важную для операционной системы информацию о нашем приложении. Расширение xml говорит нам о том, что структура и содержание файла соответствует всем стандартам языка описания xml, т.е. он содержит набор некоторых специфичных для ОС Андроид тегов с дополнительными атрибутами. Практически все теги парные.

Решение проблемы с драйвером Nexus 5 & Windows

Попробовал подключить Nexus 5 к ПК, чтобы запустить на нем приложение из Android Studio, но столкнулся с проблемой: Windows не могла распознать устройство, не было каких-то драйверов. Досадная вещь, но проблема решилась благодаря веб-серфингу. Ниже я попытался набросать небольшую инструкцию-памятку. Возможно, пригодится кому-то еще.

Обработка приложением запросов ACTION_SEND

Мы уже рассмотрели, как можно отправить данные другим приложениям, используя ACTION_SEND. В этот раз мы создадим приложение, которое способно обрабатывать подобные запросы и принимать отправляемые данные.

Наше приложение будет включать в себя два Активити. Первое (основное) будет запускаться при запуске приложения и будет выводить на экран строку, хранящуюся в Preferences. Второе Активити будет запускаться системой в ответ на запрос ACTION_SEND. Оно будет доставать из Intent-а отправленные данные (текстовую строку) и сохранять их в Preferences. Таким образом, одно Активити данные получает и сохраняет, а другое отображает.

Используем ACTION_SEND для отправки данных приложениям

Представим себе ситуацию, когда нам потребовалось отправить какие-то данные из приложения, например, с помощью Gmail. Писать самому код для работы с API Gmail было бы глупо — это равносильно изобретению велосипеда. Вместо этого мы могли бы использовать уже встроенную в Андроид функциональность, а именно — использование Intent-ов с действием ACTION_SEND. Все, что нам нужно сделать — это создать новый объект Intent, задать действие ACTION_SEND, а также передаваемые данные и их тип. После этого, нам останется запустить новое Активити, используя startActivity(), передавая в качестве параметра созданный Intent. Система сама найдет приложения, установленнные на устройстве и способные обрабатывать действия ACTION_SEND и запустит их. Если таких приложений несколько (что чаще всего и бывает), то пользователю будет показан диалог выбора нужного приложения. То есть далее нам уже не нужно будет беспокоиться о том, как и с помощью чего будут отправлены данные — это уже забота ОС и других приложений.

Loaders. Используем AsyncTaskLoader

Мы уже рассматривали ранее несколько способов создания асинхронной работы/загрузки данных. В Андроид-разработке есть еще один очень эффективный инструмент — Loaders или «загрузчики». Пожалуй, тут название говорит само за себя: Loader используется, как правило, для загрузки каких-либо данных. При этом работой загрузчиков из класса Активити или фрагмента позволяет управлять так называемый LoaderManager. Он используется один на весь класс Активити, но позволяет работать с несколькими загрузчиками.

Создание ссылки на Google Play из приложения

Рассмотрим как можно создать ссылку на собственное приложение в Google Play, используя Intent и метод startActivity().

Допустим, у нас есть меню опций, в котором мы поместили ссылку на приложение Gmail (пример условный, используйте свой линк). В методе обработки нажатия на пункт меню мы добавляем свой case, соответствующий выбору «Gmail».

Handler

Handler — это помощник/хэлпер, который позволяет нам организовать «коммуникацию» основного UI-потока и отдельно создаваемого нами потока для выполнения различного рода задач. Как известно, мы не можем обращаться из не UI-потока к элементам экрана. Однако, данная задача достаточно легко решается с использованием Handler-а.

Service. Пример простого сервиса

Service в Android (или служба) часто используется для создания постоянно работающего в фоне коде, например, для отслеживания наступления определенного времени или даты, наличия обновлений на внешнем сервере и т.п. Также с помощью сервиса можно создавать и «одноразовые» задачи. При этом рекомендуется всю продолжительную работу в сервисе запускать в отдельном потоке, чтобы не создавать «торможений» при взаимодействии пользователя с элементами на экране. Также рекомендую познакомиться с AsyncTask для создания асинхронных задач, если вы еще с ними не знакомы.