Для чего используется android manifest
Структура AndroidManifest.xml
AndroidManifest.xml – это так называемый «паспорт» любого приложения для ОС Android. Данный файл полностью описывает структуру, составляющие приложения и его требования. «Манифест» нужен любому приложению и для создания любой программы под Android его нужно составить правильно.
Существует официальная документация с описанием структуры файла AndroidManifest.xml, однако она достаточно объемная и сложная для восприятия, кроме того – на английском языке, так что мы постараемся изложить всю необходимую информацию в удобоваримой форме.
Итак, AndroidManifest.xml находится в корневой директории приложения и всегда имеет именно такое имя. Всё содержимое данного файла в теге — это корневой тег «манифеста». Например:
Package – название данного программного пакета.
VersionCode – версия приложения (значение может быть использовано для внутренних нужд).
VersionName – значение версии, которое показывается пользователю.
Тег Uses-sdk содержим параметры, которые указывают на необходимую для работоспособности приложения версию SDK. Возможны такие параметры:
minSDKVersion — минимально допустимая версия SDK, чтобы запустить программу.
targetSDKVersion – «целевая» версия SDK, проще говоря – на данной версии проводилось тестирование приложения.
maxSDKVersion – верхняя допустимая версия SDK для работы приложение. Если нет стопроцентной уверенности в том, что на более новых версиях SDK приложение не будет работать, то данный параметр лучше не использовать вовсе.
Как видно, минимальная версия SDK – четвертая, а тестирование проводилось на пятой.
Тег Uses-Configeration определяет компбинацию допустимых методов ввода для приложения. Возможны следующие параметры:
reqFiveWayNav – приложение будет требовать от устройства возможность навигации в четырех направлениях плюс нажатие (это, к примеру, оптический или пятипозиционный джойстик). Возможные значения: true, false.
reqHardKeyboard – приложение будет требовать обязательное наличие аппаратной клавиатуры. Возможные значения: true, false.
reqKeyboardType — требование приложения к типу клавиатуры, которое распространяется как на программную (сенсорную), так и на аппаратную клавиатуру. Значения:
undefined – значение по умолчанию, означает, что приложение не требует клавиатуру.
nokeys – аналогично предыдущему, приложение не требует клавиатуру.
twelvekey – приложение требует 12-символьную стандартную «телефонную» клавиатуру.
qwerty – приложение требует полную клавиатуру с раскладкой qwerty.
reqNavigation – требования приложения к возможным способам навигации на девайсе (трекбол, джойстик, колесико). Допустимые значения:
undefined – значение по умолчанию. У приложения к способу навигации требований нет.
nonav – у приложения к способу навигации требований нет.
dpad – приложению требуется D-pad для работы.
trackball – приложению нужен трекбол.
wheel – приложению требуется колесо навигации.
reqTouchScreen – обязательно наличие сенсорного экрана. Допустимые значения:
undefined – значение по умолчанию, наличие сенсорного экрана не требуется.
notouch – наличие сенсорного экрана не требуется.
stylus – необходим сенсорный экран резистивного типа (управляемый стилусом).
finger – необходим сенсорный экран емкостного типа (управляемый пальцем).
Тег User-Feature определяет необходимые аппаратные и программные возможности устройства. Полный список всех допустимых требований приведен в официальной документации для AndroidManifest.xml — http://developer.android.com/guide/topics/manifest/uses-feature-element.html#features-reference.
Для примера, требование приложением обязательного наличия камеры в устройстве:
Данный тег определяет поддерживаемые приложением разрешения экрана. Можно указать несколько параметров в качестве допустимых разрешений экрана. Допустимые параметры:
smallScreens – приложение поддерживает нестандартные и малые разрешения дисплея (такие как HVGA, QVGA).
normalScreens – приложение поддерживает стандартные разрешения (такие как HVGA, WVGA, WQVGA).
largeScreens – приложение поддерживает устройства с высокой разрешающей способностью дисплея.
anyDensity – допустимо любое разрешение экрана.
Значения для всех параметров false или true.
Тег Application – один из основных. Здесь описываются такие параметры приложения, как его название, иконка, ссылка на пользовательский интерфейс и много чего еще. Кроме того, данный тег – это контейнер для других тегов, которые описывают те или иные компоненты программы, в том числе Service, Activity, Content Provider и Broadcast Receiver. О компонентах APK мы уже говорили в другом материале.
Файл манифеста AndroidManifest.xml
Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.
Назначение файла
Общая структура манифеста
Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.
Описание
Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:
Атрибуты
объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.
android:name название разрешения android:label имя разрешения, отображаемое пользователю android:description описание разрешения android:icon значок разрешения android:permissionGroup определяет принадлежность к группе разрешений android:protectionLevel уровень защиты
Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.
android:name имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе
данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»
Наиболее распространенные разрешения
объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.
определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом
разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента
ANDROIDAPPSTORE.RU
AndroidManifest.xml — для чего он?
В статье представлены некоторые возможности AndroidManifest.xml, на который мало кто обращает особое внимание.
AndroidManifest.xml — предоставляет подробную информацию о приложении. В каждом Android приложении вы должны увидите этот файл, так как он является обязательным для создания приложения на ОС Android.
В AndroidManifest.xml можно настроить следующие возможности:
Структура AndroidManifest.xml
Когда вы перейдете к написанию более сложного проекта, то вы заметите, что вам часто придется обращаться к этому файлу для того чтобы сконфигурировать какой-то из необходимых вам компонентов.Но для того, чтобы там что-то конфигурировать не плохо было бы знать, что и для чего нужно, именно об этом пойдет речь ниже.
Вот все основные возможности AndroidManifest.xml они представлены в виде xml тегов.
Примерно так выглядит манифест файл, где каждый из тегов может хранить какуе-то конфигурацию.
А теперь по очереди, что и для чего.
Это самый главный тег в котором вложена вся конфигурация проекта.
По умолчанию он создается вместе с файлом AndroidManifest и изначально имеет начальный набор параметров:
Что же значат эти параметры?
xmins:android — определяет пространство имен Android;
package — определяет уникальное имя пакета приложения, которое вы задали при создании проекта.
Зачем указывать package? Если вы захотите загрузить ваше приложение на Google Play, то он проверяет уникальность при приеме приложения, поэтому рекомендуется использовать свое имя для избежания конфликтов с другими разработчиками.
android:versionCode — по сути это версия вашего приложения. Выпуская новую версию вы указываете её в этом поле, оно должно быть целым числом.
Выше мы говори про уникальность пакета, так вот если вы ранее загрузили на Google Play ваше приложение, то когда вы решите загрузить обновленную версию приложения, то вам нужно придерживаться нескольких правил. Имя пакета должно совпадать с тем, что уже загружено Google Play и указать версию android:versionCode на порядок выше. Но это при условии что вы выпускаете новую версию приложения, в случае если вы хотите добавить немного исправленную версию, то это читайте ниже.
Изменив данный параметр и загрузив приложение на Google Play все пользователям вашего приложения будет предложено обновится до новой версии приложения.
android:versionName — указывает номер пользовательской версии. Если вы нашли несколько недоработок в вашем приложении и исправили их, то в этом случае можно указать для этого поля новую версию, что будет говорить Google Play, что это не новая версия приложения, а улучшенная. Для именования версии можно использовать строку или строковый ресурс.
Изменив данный параметр и загрузив приложение на Google Play все пользователям вашего приложения будет предложено обновится до модифицированной версии приложения.
Тег позволяет вам запрашивать разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования.
Разрешения предоставляются во время установки приложения, а не во время его работы. имеет единственный атрибут с именем разрешения android:name.
android:name — позволяет дать разрешения на использование ресурсов системы. Например:
Наиболее распространенные разрешения
— INTERNET — доступ к интернету;
— READ_CONTACTS — чтение данных из адресной книги пользователя;
— WRITE_CONTACTS — запись данных из адресной книги пользователя;
— RECEIVE_SMS — обработка входящих SMS;
— ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi;
— ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS.
— позволяет установить разрешения на использования ресурсов системы или запретить использование компонентов приложения.
android:name — название разрешения
android:label — имя разрешения, отображаемое пользователю
android:description — описание разрешения
android:icon — значок разрешения
android:permissionGroup — определяет принадлежность к группе разрешений
android:protectionLevel — уровень защиты
— объявляет базовое имя для дерева разрешений.
Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.
— определяет имя для набора логически связанных разрешений.
Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения.
Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента
— объявляет объект instrumentation, который дает возможность контролировать взаимодействие приложения с системой.
Обычно используется при отладке и тестировании приложения и удаляется из release-версии приложения.
— позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android.
Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.
Данный тег имеет следующие атрибуты:
android:minSdkVersion — определяет минимальный уровень API, требуемый для работы приложения.
Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте. Вы должны всегда объявлять этот атрибут, например:
android:minSdkVersion=»17″
android:maxSDKVersion — позволяет определить самую позднюю версию, которую готова поддерживать ваше приложение.
Ваше приложение будет невидимым в Google Play для устройств с более свежей версией.
targetSDKVersion — позволяет указать платформу, для которой вы разрабатывали и тестировали приложение.
Устанавливая значение для этого атрибута, вы сообщаете системе, что для поддержки этой конкретной версии не требуется никаких изменений.
— указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства.
Например, приложение приложению для работы нужно наличие фронтальной камеры или USB порт. Спецификация используется, чтобы избежать установки приложения на устройствах, которые не поддерживают требуемую конфигурацию.
Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы для каждой конфигурации. Вы можете задать любую комбинацию, содержащие следующие устройства
— reqHardKeyboard — используйте значение true, если приложению нужна аппаратная клавиатура;
— reqKeyboardType — позволяет задать тип клавиатуры: nokeys, qwerty, twelvekey, undefined;
— reqNavigation — укажите одно из значений: nonav, dpad, trackball, wheel или undefined, если требуется устройство для навигации;
Приложение не будет устанавливаться на устройстве, которое не соответствует заданной вами конфигурации.
В идеале, вы должны разработать такое приложение, которое будет работать с любым сочетанием устройств ввода. В этом случае не нужен.
объявляет определенную функциональность, требующуюся для работы приложения.
Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует фронтальную камеру с автофокусом. Если устройство не имеет встроенную фронтальную камеру с автофокусом, приложения не будет инсталлировано.
android.hardware.camera.front — требуется аппаратная камера
android.hardware.camera.autofocus — требуется камера с автоматической фокусировкой
В офф. документации Android можно посмотреть все параметры, вот ссылка.
Можно переопределить требование по умолчанию, добавив атрибут required со значением false.
Например, если вашей программе не нужно, чтобы камера поддерживала автофокус:
— определяет разрешение экрана, требуемое для функционирования устройства.
Данный тег позволяет указать размеры экран, для которого было создано приложение. Система будет масштабировать ваше приложение на основе ваших макетов на тех устройствах, которые поддерживают указанные вами разрешения экран.
Для других случаев система будет растягивать макет по мере возможности.
smallScreen — QVGA экраны
normalScreen — стандартные экраны HVGA и WQVGA
largeScreen — большие экраны
xlargeScreen — очень большие экраны, которые превосходят размеры планшетов
anyDensity — установите значение true, если ваше приложение способно масштабироваться для отображения на экране с любым разрешением.
По умолчанию, для каждого атрибута установлено значение true. Вы можете указать, какие размеры экранов ваше приложение не поддерживает.
Начиная с API 13 — Android 3, у тега появились новые атрибуты:
requiresSmallestWidthDp — указываем минимальную поддерживаемую ширину экрана в аппаратно-независимых пикселях. С его помощью можно отфильтровать устройства при размещении приложения в Google Play
compatibleWidthLimitDp — задаёт верхнюю границу масштабирования для вашего приложения. Если экран устройства выходит за указанную границу, система включит режим совместимости.
largestWidthLimitDp — задаёт абсолютную верхнюю границу, за пределами которой ваше приложение точно не может быть смаштабировано. В этом случае приложение запускается в режиме совместимости, которую нельзя отключить.
Следует избегать подобных ситуаций и разрабатывать макеты для любых экранов.
Данный тег имеет два атрибута:
android:screenSize — указывает размер экрана.
Манифест приложения
Каждый проект в Android имеет файл манифеста, называемый AndroidManifest.xml, который хранится в корневом каталоге. Файл манифеста является важной частью нашего приложения, поскольку он определяет структуру и метаданные приложения. В частности, манифест приложения выполняет следующие задачи:
Файл манифеста также указывает метаданные приложения, которые включают в себя иконку, номер версии, темы и так далее.
Манифест приложения содержит корневой элемент с именем пакета, заданным в атрибуте package. Он также должен включать атрибут xmls:android, который будет предоставлять несколько системных атрибутов, используемых в файле.
В можно добавить атрибут android:versionCode, который используется для определения текущей версии приложения в виде целого числа, которое увеличивается с каждым обновлением. Также атрибут android:versionName используется для указания публичной версии, которая показывается пользователям.
Также можно указать, куда должно устанавливаться приложение: на SD-карту или внутреннюю память, используя атрибут android:installLocation.
Oбщая структура файла манифеста выглядит следующим образом:
Кратко рассмотрим каждый из этих элементов.
Элемент
Этот элемент позволяет запрашивать у системы разрешения, которые нужны приложению для доступа к различным функциям. Это делается с помощью единственного атрибута android:name, в параметры которого нужно передать имя разрешения. Например, для получения доступа к Интернету нужно добавить следующее разрешение:
Элемент
Объявляет разрешение, которое может использоваться для ограничения доступа к определенным компонентам или функциям этого или других приложений.
Элемент
Этот элемент объявляет базовое имя дерева разрешений. Приложение получает права собственности на все разрешения в дереве. Оно может динамически добавлять новые разрешения для дерева, вызывая PackageManager.addPermission(). Имена внутри дерева разделяются точками. Например, если имя дерева задано как ru.androidtools.project, то для него можно добавить следующие разрешения:
Обратите внимание, что этот элемент не объявляет сами разрешения, а только пространство имен, в котором эти разрешения будут размещены.
Элемент
Объявляет имя группы для набора разрешений. Отдельные разрешения присоединяются к группе через атрибут android:permissionGroup элемента
Обратите внимание, что этот элемент не объявляет само разрешение, а только категорию, в которую разрешения будут помещены.
Манифест Android
Материал из AOW
Содержание
Файл манифеста AndroidManifest.xml
Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения. Назначение файла объявляет имя Java-пакета приложения, который служит уникальным идентификатором; описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения; содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями; объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения; объявляет минимальный уровень API Android, необходимый для работы приложения; перечисляет связанные библиотеки; Общая структура манифеста
Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.
Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:
определяет пространство имен Android. Оно всегда одно и то же
определяет уникальное имя пакета приложения, которое вы задали при создании проекта. Android Marketplace проверяет уникальность при приеме приложения, поэтому рекомендуется использовать свое имя для избежания конфликтов с другими разработчиками. Например, я использую имя своего сайта в обратном порядке: ru.alexanderklimov.appname
указывает на внутренний номер версии, используемый для сравнения версий программы. «versionCode» должен быть целым, и Android Market использует это для определения, предоставили ли вы новую версию, передавая триггеру обновления на устройствах, на которых установлено ваше приложение. Как правило. начинается с 1 и увеличивается на единицу, если вы выпускаете новую версию приложения.
указывает номер пользовательской версии. Можно использовать строку или строковый ресурс. Этот номер видит пользователь. Читайте совет Получить номер версии программы
объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.
имя разрешения, отображаемое пользователю
определяет принадлежность к группе разрешений
Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.
имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе
данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»
Наиболее распространненные разрешения
объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.
определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом
разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента
Элемент объявляет объект instrumentation, который дает возможность контролировать взаимодействие приложения с системой. Обычно используется при отладке и тестировании приложения и удаляется из release-версии приложения.
Элемент позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android. Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.
определяет минимальный уровень API, требуемый для работы приложения. Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте. Вы должны всегда объявлять этот атрибут, например: android:minSdkVersion=»3″
позволяет определить самую позднюю версию, которую готова поддерживать ваша программа. Ваше приложение будет невидимы в Android Market для устройств с более свежей версией. Рекомендуется устанавливать в том случае, когда вы точно уверены, что приложение не будет корректно работать на новой платформе.
позволяет указать платформу, для которой вы разрабатывали и тестировали приложение. Устанавливая значение для этого атрибута, вы сообщаете системе, что для поддержки этой конкретной версии не требуется никаких изменений.
Элемент указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства. Например, приложение могло бы определить требования обязательного наличия на устройстве физической клавиатуры или USB-nopTa. Спецификация используется, чтобы избежать инсталляции приложения на устройствах, которые не поддерживают требуемую конфигурацию. Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы для каждой конфигурации. Вы можете задать любую комбинацию, содержаoe. следующие устройства
Приложение не будет устанавливаться на устройстве, которое не соответствует заданной вами конфигурации. В идеале, вы должны разработать такое приложение, которое будет работать с любым сочетанием устройств ввода. В этом случае не нужен.
Элемент объявляет определенную функциональность, требующуюся для работы приложения. Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует камеры с автофокусом. Если устройство не имеет встроенную камеру с автофокусом, приложения не будет инсталлировано.
требуется аппаратная камера
требуется камера с автоматической фокусировкой
Список можно увидеть здесь.
Элемент определяет разрешение экрана, требуемое для функционирования устройства (для старых версий Android-устройств). По умолчанию современное приложение с уровнем API 4 или выше поддерживает все размеры экрана и должно игнорировать этот элемент.
как правило экраны QVGA
стандартные экраны HVGA и WQVGA
установите значение true, если ваше приложение способно масштабироваться для отображения на экране с любым разрешением.
По умолчанию, для каждого атрибута установлено значение true. Вы можете указать, какие размеры экранов ваше приложение не поддерживает.
Для этого класса зарегистрирован фильтр вызовов, определяющий, что это действие запущено в приложении (действие android:name=«android.intent.action.MAIN»). Определение категории (категория android:name=«android.intent.category.LAUNCHER» ) определяет, что это приложение добавлено в директорию приложений на Android-устройстве. Значения @ направляют файлы ресурсов, которые содержат актуальные значения. Это упрощает работу с разными ресурсами, такими как строки, цвета, значки.
текстовая метка, отображаемая пользователю
При изменении языка, региона или аппаратной конфигурации Android прерывает работу всех приложений и затем запускает их повторно, перезагружая значения из ресурсов. Подобное поведение не всегда уместно и желательно. Например, некоторые изменения конфигурации (ориентация экрана в пространстве, доступность клавиатуры) могут произойти только лишь из-за того, что пользователь повернул устройство или выдвинул клавиатуру. Вы можете настраивать, каким образом ваше приложение будет реагировать на подобные изменения, обнаруживая их и выполняя собственные действия. Чтобы заставить Активность отслеживать изменения конфигурации при выполнении программы, добавьте в ее узел в манифесте атрибут android:configChanges, указав, какие именно события хотите обрабатывать.
Перечислим некоторые значения, с помощью которых можно описать изменения конфигурации:
В некоторых случаях одновременно будут срабатывать несколько событий. Например, когда пользователь выдвигает клавиатуру, большинство устройств генерируют события keyboardHidden и orientation. Вы можете выбирать несколько событий, которые хотите обрабатывать самостоятельно, разделяя их символом |.
Наличие атрибута android:configChanges отменяет перезапуск приложения при заданных изменениях конфигурации. Вместо этого внутри Активности срабатывает метод onConfigurationChanged(). Переопределите его, чтобы появилась возможность обрабатывать изменения в конфигурации. Используйте переданный объект Configuration, чтобы получить новые значения. Не забудьте вызвать одноименный метод из родительского класса и перезагрузить измененные значения со всех ресурсов, которые используются внутри Активности.
Любые изменения конфигурации, которые не были явно помечены для обработки внутри вашего приложения, приведут к перезапуску Активности, минуя вызов метода onConfigurationChanged.
Элемент определяет категорию компонента, которую должно обработать намерение. Это строковые константы, определенные в классе intent, например:
Элемент добавляет спецификацию данных к фильтру намерений. Спецификация может быть только типом данных (атрибут mimeType), URI или ТИПОМ данных вместе с URI. Значение URI определяется отдельными атрибутами для каждой из его частей, т. е. URI делитСЯ на части: android:scheme, android:host, android:port, android:path или android:pathPrefix, android:pathPattern.
Элемент объявляет службу как один из компонентов приложения. Все службы должны быть представлены элементом в файле манифеста. Службы, которые не были объявлены, не будут обнаружены системой и никогда не будут запущены. Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д. Поддерживает вложенные узлы
Элемент объявляет приемник широковещательных намерений как один из компонентов приложения. Приемники широковещательных намерений дают возможность приложениям получить намерения, которые переданы системой или другими приложениями, даже когда другие компоненты приложения не работают.
объявляет контент-провайдера (источник данных) для управления доступом к базам данных. Все контент-провайдеры, которые являются частью приложения, должны быть представлены в элементах
в файле манифеста. Если они не объявлены, они не будут работать, т. к. система их не сможет увидеть. Элемент
содержит свой набор дочерних элементов для установления разрешений доступа к данным:
Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д.
Элемент является дочерним элементом для
— дочерний элемент для
. Определяет путь и требуемые разрешения для определенного подмножества данных в пределах поставщика оперативной информации. Этот элемент может быть определен многократно, чтобы поставлять множественные пути.