Поиск по сайту

AndroidManifest.xml

вкл. . Опубликовано в Статьи


programmiruem na android


AndroidManifest.xml - необходимый файл для каждого приложения Android. Он расположен в папке приложения и описывает глобальные значения для Вашего пакета, включая прикладные компоненты (действия, службы, и т.д), который пакет выставляет ‘внешнему миру’, какие данные каждое из Activity приложения может обработать, и как они могут быть начаты.

Важная вещь к упоминанию об этом файле - свой так называемый IntentFilters. Эти фильтры описывают где и когда Activity может быть начат. Когда Activity (или операционная система) хочет выполнить действие, такое, как открыть Web-страницу или открыть экран выбора, это создает объект Intent. Этот Intent может хранить информацию, описывающую, что Вы хотите сделать, какие данные необходимы, чтобы достигнуть этого и другую информацию. Андроид сравнивает информацию в объекте Intent с IntentFilters, выставленным каждым приложением, и находит Activity, соответствующие, чтобы обработать данные или действия, определенные вызывающей программой. Если есть больше чем одно приложение, способное к обработке этого Intent , пользователя спрашивают, каким приложением он предпочел бы обрабатывать это.

Помимо объявления Activity, Content Provider,  Service и Intent Receivers Вашего приложения, Вы можете также определить разрешения в AndroidManifest.xml.

Основное

Очень простой AndroidManifest.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.anddev.android.hello_android">

<application android:icon="@drawable/icon">

<activity android:name=".Hello_Android"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

- Почти каждый AndroidManifest.xml (так же как многие другой Андроид файлы XML) будет включать объявление пространства имен в его первый элемент. Это делает множество стандартных атрибутов Андроид доступным в файле, который будет использоваться, чтобы снабдить большинством данных для элементов в том файле.

- Почти каждый AndroidManifest.xml включает единственный <application> тэг, который непосредственно содержит несколько тэгов, описывающих Applications, IntentReceivers, и т.д., которые доступны в этом приложении.

- Если Вы хотите сделать Activity запускаемым непосредственно через пользователя, то Вы должны будете прописать ему  поддержку действия MAIN и категории LAUNCHER. Результат как показано здесь: 

  

Напрямую запускаемый Activity.  

Дальше следует, детальный разбор структуры файла AndroidManifest с описыванием всех доступных <tags>, с примером для каждого. (Примеры не везде, но я точно ничего не потерял. И фраза “для каждого” в англ. версии (“for each”) тоже была. Не знаю, где они потеряли эти примеры. – прим. переводчика). Кто чей потомок, можно определить по отступу:

<manifest>

Это корневой узел каждого AndroisManifest.xml. Он содержит пакета атрибутов, который указывает на какой-то конкретный пакет в Activity (Получилось не совсем по-русски, но, вообщем, фишка в том, что в коде есть пакет Activity, а вот параметры этого пакета описаны в этом теге. - прим. переводчика). Другой путь к Activities будет базироваться относительно его значения. 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.anddev.android.smstretcher">

<uses-permission>

Описывает разрешения безопасности, которы нужно предоставить Вашему пакету. Количество не ограничено.

<uses-permission android:name = "android.permission. RECEIVE_SMS"/>

<permission>

Объявляет разрешение безопасности, которое может использоваться, чтобы указать, какие приложения могут обратиться к компонентам или особенностям в этом пакете. Количество не ограничено.

<instrumentation>

Объявляет код контрольно-измерительного компонента, который доступен, чтобы проверить функциональные возможности этого или другого пакета. См. Оснащение аппаратурой для большего количества подробностей. Количество не ограничено.

<application>

Корневой элемент, содержащий объявления компонентов на уровне , содержится в пакете. Этот элемент может также включать глобальные и/или заданные по умолчанию атрибуты для приложения, такие как метка, значок, тема, требование разрешения, и т.д. Количество – от нуля до единицы.

<application android:icon="@drawable/icon">

<activity>

Activity - первичная вещь для приложения, чтобы взаимодействовать с пользователем. Экраном, который пользователь видит, запуская приложение, является Activity, и большинство других экранов, которые они используют, будет осуществлено как отдельные действия, объявленные с дополнительными тэгами Activity.

<activity android:name=".Welcome" android:label="@string/app_name">

Примечание: у Каждой Activity должен быть <activity> тэг в manifest, выставлено ли это миру или предназначено для использования только в пределах собственного пакета. Если у Activity не будет никакого тэга соответствия в manifest, то Вы не сможете использовать ее.  

 <intent-filter>

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

<intent-filter>

<action>

Тип действия, который компонент поддерживает. Пример:

<action android:name="android.intent.action.MAIN" />

<category>

Тип категории, который компонент поддерживает. Пример:

<action android:name="android.intent.category.LAUNCHER" />

<data>

Тип MIME, URI схема  или URI путь поддержки компонента. 

Вы можете также связаться 1+ части метаданных с Вашим Activity: 

<meta-data>

Добавляет новую часть метаданных к Activity, которую клиенты могут восстановить через ComponentInfo.metaData. 

<receiver>

IntentReceiver позволяет приложению сообщать о замене данных или о действиях, которые происходят, даже если приложение не выполняется в настоящее время. Как и с тэгом activity, в этот тег Вы можете произвольно включить больше одного <intent-filter> или <meta-data>, так же, как с <activity>. 

 <receiver android:name=".SMSReceiver"> 

<service>

Service - компонент, который работает на заднем плане произвольное количество времени. В этот тег, как с тэгом activity, Вы можете произвольно включить один или более <intent-filter> или <meta-data>. 

<provider>

ContentProvider - компонент, который управляет постоянными (persistent) данными и открывает к ним доступ другим приложениям. Вы можете также произвольно присоединить один или более <meta-data>, как и в activity. <intent-filter>  тут нету.

 Конечно, все <теги> должны быть или так </закрыты>, или так, <напрямую/>.


Смотрите также - Статьи