Когда вы создаете новое приложение, в корне вашего проекта автоматически создается файл AndroidManifest.xml. AndroidManifest.xml — это необходимый файл в любом проекте. Он определяет глобальные значения для вашего пакета, в нем вы описываете, что находится внутри вашего приложения — деятельности, сервисы и тд. Вы так же определяете, как все эти элементы взаимодействуют с Андроид. Например, какие виды данных может перехватывать ваша программа. Должна ли она отображаться в главном меню вашего телефона и тд.

Одна из важных частей манифеста — это фильтры намерений (intent filters). Эти фильтры описывают где и когда ваша деятельность (activity) может быть запущена. Когда деятельность (activity) или операционная система хочет совершить некие действия, напрммер, отрыть веб страницу или окно выбора контакта, оно создает объект намерений. Этот объект может содержать несколько дескрипторов описывающих, что именно вы хотите сделать, какие данные вам нужны для этого и какого типа, а так же дополнительную информацию. Android сравнивает информацию в объекте намериний (Intent object) с фильтрами намерений которые были представлены всеми программами установленными у вас, и находит приложение наиболее для этого подходящее.

Кроме того, объявляя в вашем приложении деятельности, провайдеры содержимого, сервисы, нарения и фильтры намерений, вы так же можете указать огранияения и инструменты (управление безопасностью и  тестирование).

Простой пример AndroidManifest.xml:




        
    
    
        
            
                
                
            
        
        
    
    

Несколько особенностей:

  • Каждый файл AndroidManifest.xml (как и большинство дляругих xml файлов в Android) включает описание  пространства имен
    xmlns:android="http://schemas.android.com/apk/res/android"

    , в качестве своего первого элемента.

  • Большинство манифестов включает одиночный элемент
     <application>

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

  • Любой пакет может быть представлен пользователю как самостоятельная программа, доступной из главноего меню телефона. Для этого нужно что бы в прокете была хотя бы одна деятельность, которая поддерживает действие MAIN и категорию LAUNCHER показанную в примере выше.

Детальное описание структуры файла AndroidManifest.xml file.

<manifest>
Корневой элемент, содержащий полное описание вашего пакета. В него могут включаться следующие элементы:
<uses-permission>
описывает права необходимые для того что бы ваша программа работала корректно. То есть, если вы в своей программе хотите использовать доступ к данным GPS, то в этой секции вы должны явно это указать, например так: <uses-permission android:name=»android.permission.ACCESS_GPS» /> Манифест может вообще не содержать этот элемент.
<permission>
В этой секции описываются права, которые должны запросить другие приложения для доступа к вашему. Манифест может вообще не содержать этот элемент.
<instrumentation>
Описывает код компонентов инструментария доступный для тестирования функционала этого или другого приложения. Манифест может вообще не содержать этот элемент.
<application>
Корневой элемент содержащий описание компонент уровня приложения доступных в пакете. Этот элемент может содержать глобальные и/или значения по умолчанию, такие как иконка программы, название, тема оформления, необходимые права доступа и тд. Манифест может вообще не содержать этот элемент. Под ним также могут располагаться ноль или более других описаний:
<activity>
Деятельность это основной компонент приложения взаимодействующий с пользователем. Первое окно которое видят пользователи при запуске программы, это и есть деятельность, и большинство других окон будут реализованы как отдельные деятелньости описанные тэгом <activity>.
Замечание: Каждая деятельность должна иметь собственный тэг <activity> в файле манифеста. Если деятельность не описана в манифесте, то вы не сможете ее запускать. Ваше приложение вызовет ошибку.

Для поддержки позднего поиска вашей деятельности, вы можете включить один или более <intent-filter> элементов для описания действий, которые деятельность поддерживает.

<intent-filter>
Описывается определенный тип значений намерений, которые компоненты подерживают в качестве фильтров намерений. В дополнение, различные типы значений могут быть указаны под этим элементом. Аттрибутымогут быть указаны для получения уникального названия, иконки или другой информации для действия которое было описано.
<action>
Действие намерений, которое компонент поддерживает.
<category>
Категория намерений которое компонент поддерживает.
<data>
Указываются поддерживаемые типы: Intent data MIME type, Intent data URI scheme, Intent data URI authority или Intent data URI path.

Вы так же можете ассоциировать один или более компонентов <meta-data> со своей деятельностью, что бы другие клиенты могли получить для поиска дополнительной информации о ней:

<meta-data>
Добавляет описание мета информации к вашей деятельности, клиенты которой могут получить ее через ComponentInfo.metaData.
<receiver>
Широковещательный приемник (BroadcastReceiver) позволяет приложению узнавать о изменениях с данными или действиями которые случились, даже если программа не запущена. Так же как и <activity>, вы можете указать один или более <intent-filter> или значения <meta-data>, которые получатель поддерживает.
<service>
Сервис это компонент который может быть запущен в фоне на произвольное количество времени. Так же как и в теге <activity>, опционально вы можете указать один или более <intent-filter> или <meta-data> элементов, которые поддерживает сервис.
<provider>
Провайдер содержимого (ContentProvider) это компонент который управлет доступом к данным вашей программы, предоставляя его другим приложениям. Вы так же можете указать один или более элементов <meta-data>.

Дополнения и исправления приветствуются.

Google Bookmarks Digg I.ua Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong
by vovkab Нет комментариев »
Рубрики: Статьи | Метки: ,

Комментарии закрыты.