Android provider android manifest

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

Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.

Назначение файла

  • объявляет имя Java-пакета приложения, который служит уникальным идентификатором;
  • описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;
  • содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;
  • объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;
  • объявляет минимальный уровень API Android, необходимый для работы приложения;
  • перечисляет связанные библиотеки;

Общая структура манифеста

Файл манифеста инкапсулирует всю архитектуру 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»

Наиболее распространенные разрешения

  • INTERNET — доступ к интернету
  • READ_CONTACTS — чтение (но не запись) данных из адресной книги пользователя
  • WRITE_CONTACTS — запись (но не чтение) данных из адресной книги пользователя
  • RECEIVE_SMS — обработка входящих SMS
  • ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi
  • ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS

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

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

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

Источник

Android provider android manifest

Разработка под android

Объявляет поставщика содержимого. Поставщик содержимого является подклассом ContentProvider, который обеспечивает структурированный доступ к данным, управляемым приложением. Все поставщики содержимого вашего приложения должны быть объявлены с помощью элемента

в файле манифеста, иначе они будут недоступны для системы и не смогут быть использованы.

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

Система Android хранит ссылки на поставщиков содержимого в соответствии с authority, которая является частью URI. Например, вы хотите получить доступ к поставщике содержимого, который хранит информацию о медицинских работниках. Чтобы это сделать, вызовите метод ContentResolver.query(), который среди прочих аргументов принимает URI, идентифицирующий поставщика:

Читайте также:  Автозапись звонков для меня для андроид

Схема content: определяет, что URI указывает на поставщика системы Android. Authority com.example.project.healthcareprovider указывает на сам поставщик содержимого; Android содержит список известных поставщиков и их authority; Подстрока nurses/rn это путь (path), который использует поставщик для описания набора данных.

Когда вы определяете поставщика содержимого с помощью элемента

, обратите внимание, что аргумент android:name содержит только authority и не содержит схему и путь.

Подробности читайте в разделе Поставщики содержимого.

Список из одного или нескольких URI authority, которые указывают на данные, предоставляемые поставщиком содержимого. Названия authority разделяются точкой с запятой ‘;’. Для избежания конфликтов, используйте стиль именования пакетов Java (например, com.example.provider.cartoonprovider ). Как правило, это имя подкласса ContentProvider, который реализует поставщика содержимого.

Атрибут не имеет значения по умолчанию. Обязательно должно быть указано хотя бы одно значение authority.

Указывает может ли поставщик быть создан системой, true – если может и false – если нет. Значение по умолчанию true .

должны быть равны true (это их значение по умолчанию). Если в одном из элементов будет указано значение false , поставщик не сможет быть создан.

Указывает, доступен ли поставщик для использования другими приложениями:

  • true: доступен для других приложений. Любое приложение может использовать URI поставщика содержимого для доступа к данным, с учетом разрешений для поставщика.
  • false: недоступен для других приложений. Установите это значение для ограничения доступа к поставщику содержимого. Получить доступ смогут только приложения, имеющие такой же идентификатор пользователя.

Значение по умолчанию true для приложений, у которых один из атрибутов android:minSdkVersion или android:targetSdkVersion равен 16 или ниже, иначе значение по умолчанию false .

Вы можете установить значение атрибута, равное false и в дополнение к этому ограничить доступ с помощью разрешений (смотрите элемент

Указывает может ли выдаваться временное разрешение тому, кто обычно не имеет разрешения на доступ к данным поставщика содержимого. Если установлено true , разрешение может быть выдано для любых данных поставщика, если false – разрешение может быть выдано только для набора данных, указанных в элементах . Значение по умолчанию false .

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

В таких случаях разрешение выдается с помощью установки флагов FLAG_GRANT_READ_URI_PERMISSION и FLAG_GRANT_WRITE_URI_PERMISSION в намерении, которой запускает компонент. К примеру, почтовый клиент может установить флаг FLAG_GRANT_READ_URI_PERMISSION для намерения и передать его в метод Content.startActivity() . Разрешение будет установлено для URI, указанного в намерении.

Если вы включаете данную функцию, установив данный атрибут в true или с помощью элементов , вы должны вызывать метод Context.revokeUriPermission(), когда URI удаляется из поставщика.

Смотрите также элемент .

Иконка для поставщика содержимого. Атрибут должен содержать ссылку на ресурс типа drawable. Если атрибут не установлен, будет использоваться иконка приложения, указанная в элементе .

Порядок, в котором поставщик содержимого должен создаваться, относительно других поставщиков того же процесса. Атрибут используется при наличии зависимости между поставщиками содержимого и гарантирует для каждого из них, что они создаются в порядке, предусмотренном этими зависимостями.

Атрибут должен содержать целочисленное значение. Чем выше номер, тем раньше запускается поставщик.

Заголовок поставщика, видимый для пользователя. Если атрибут не установлен, используется заголовок приложения, установленный в элементе .

Атрибут должен содержать строку или ссылку на строковый ресурс (рекомендуется).

Указывает может ли экземпляр поставщика ресурсов быть создан в другом процессе. true если экземпляры могут работать в разных процессах, false если нет. Значение по умолчанию false .

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

Читайте также:  Ducks tales remastered android

Имя класса (подкласс ContentProvider), который реализует поставщика содержимого. Это должно быть полное имя, включая название пакета (например com.example.project.TransportationProvider ). Однако, если первым символом стоит точка, будет использоваться имя пакета, указанное в элементе .

Атрибут не имеет значения по умолчанию.

Название разрешения, которое должны иметь клиенты для чтения или записи данных поставщика содержимого. Атрибут предоставляет удобный способ указать разрешение для записи и чтения в одном месте. Однако, атрибуты readPermission и writePermission имеют над ним приоритет.

Имя процесса, в котором поставщик содержимого должен быть запущен. Как правило, все компоненты приложения запускаются в процессе по умолчанию, созданным для приложения и задавать этот атрибут не требуется. Но если необходимо, вы можете задать другое имя процесса, что позволит распределить компоненты вашего приложения между несколькими процессами.

Если имя, указанное в атрибуте начинается с двоеточия “:”, новый процесс, частный для приложения, создается при необходимости и поставщики работают в нем. Если имя процесса начинается с маленькой буквы, поставщик будет запущен в глобальном процессе с указанным именем, при условии, что оно имеет разрешение. Это позволяет компонентам различных приложений использовать общий процесс, снижая расход ресурсов.

Разрешение, необходимое клиентам для чтения поставщика содержимого.

Указывает должны ли синхронизироваться данные между поставщиком содержимого и сервером. true если должны, false если нет.

Разрешение, необходимое клиентам для внесения изменений в данные, которые контролирует поставщик содержимого.

ДОБАВЛЕНО: уровень API 1 СМОТРИТЕ ТАКЖЕ: Поставщики содержимого

Источник

Working with the Android Manifest

AndroidManifest.xml is a powerful file in the Android platform that allows you to describe the functionality and requirements of your application to Android. However, working with it is not easy. Xamarin.Android helps to minimize this difficulty by allowing you to add custom attributes to your classes, which will then be used to automatically generate the manifest for you. Our goal is that 99% of our users should never need to manually modify AndroidManifest.xml.

AndroidManifest.xml is generated as part of the build process, and the XML found within Properties/AndroidManifest.xml is merged with XML that is generated from custom attributes. The resulting merged AndroidManifest.xml resides in the obj subdirectory; for example, it resides at obj/Debug/android/AndroidManifest.xml for Debug builds. The merging process is trivial: it uses custom attributes within the code to generate XML elements, and inserts those elements into AndroidManifest.xml.

The Basics

At compile time, assemblies are scanned for non- abstract classes that derive from Activity and have the [Activity] attribute declared on them. It then uses these classes and attributes to build the manifest. For example, consider the following code:

This results in nothing being generated in AndroidManifest.xml. If you want an element to be generated, you need to use the [Activity] custom attribute:

This example causes the following xml fragment to be added to AndroidManifest.xml:

The [Activity] attribute has no effect on abstract types; abstract types are ignored.

Activity Name

Beginning with Xamarin.Android 5.1, the type name of an activity is based on the MD5SUM of the assembly-qualified name of the type being exported. This allows the same fully-qualified name to be provided from two different assemblies and not get a packaging error. (Before Xamarin.Android 5.1, the default type name of the activity was created from the lowercased namespace and the class name.)

If you wish to override this default and explicitly specify the name of your activity, use the Name property:

This example produces the following xml fragment:

You should use the Name property only for backward-compatibility reasons, as such renaming can slow down type lookup at runtime. If you have legacy code that expects the default type name of the activity to be based on the lowercased namespace and the class name, see Android Callable Wrapper Naming for tips on maintaining compatibility.

Activity Title Bar

By default, Android gives your application a title bar when it is run. The value used for this is /manifest/application/activity/@android:label . In most cases, this value will differ from your class name. To specify your app’s label on the title bar, use the Label property. For example:

Читайте также:  Мейзу м6 ноут прошивка андроид 8

This example produces the following xml fragment:

Launchable from Application Chooser

By default, your activity will not show up in Android’s application launcher screen. This is because there will likely be many activities in your application, and you don’t want an icon for every one. To specify which one should be launchable from the application launcher, use the MainLauncher property. For example:

This example produces the following xml fragment:

Activity Icon

By default, your activity will be given the default launcher icon provided by the system. To use a custom icon, first add your .png to Resources/drawable, set its Build Action to AndroidResource, then use the Icon property to specify the icon to use. For example:

This example produces the following xml fragment:

Permissions

When you add permissions to the Android Manifest (as described in Add Permissions to Android Manifest), these permissions are recorded in Properties/AndroidManifest.xml. For example, if you set the INTERNET permission, the following element is added to Properties/AndroidManifest.xml:

Debug builds automatically set some permissions to make debug easier (such as INTERNET and READ_EXTERNAL_STORAGE ) – these settings are set only in the generated obj/Debug/android/AndroidManifest.xml and are not shown as enabled in the Required permissions settings.

For example, if you examine the generated manifest file at obj/Debug/android/AndroidManifest.xml, you may see the following added permission elements:

In the Release build version of the manifest (at obj/Debug/android/AndroidManifest.xml), these permissions are not automatically configured. If you find that switching to a Release build causes your app to lose a permission that was available in the Debug build, verify that you have explicitly set this permission in the Required permissions settings for your app (see Build > Android Application in Visual Studio for Mac; see Properties > Android Manifest in Visual Studio).

Advanced Features

Intent Actions and Features

The Android manifest provides a way for you to describe the capabilities of your activity. This is done via Intents and the [IntentFilter] custom attribute. You can specify which actions are appropriate for your activity with the IntentFilter constructor, and which categories are appropriate with the Categories property. At least one activity must be provided (which is why activities are provided in the constructor). [IntentFilter] can be provided multiple times, and each use results in a separate element within the . For example:

This example produces the following xml fragment:

Application Element

The Android manifest also provides a way for you to declare properties for your entire application. This is done via the element and its counterpart, the Application custom attribute. Note that these are application-wide (assembly-wide) settings rather than per-Activity settings. Typically, you declare properties for your entire application and then override these settings (as needed) on a per-Activity basis.

For example, the following Application attribute is added to AssemblyInfo.cs to indicate that the application can be debugged, that its user-readable name is My App, and that it uses the Theme.Light style as the default theme for all activities:

This declaration causes the following XML fragment to be generated in obj/Debug/android/AndroidManifest.xml:

In this example, all activities in the app will default to the Theme.Light style. If you set an Activity’s theme to Theme.Dialog , only that Activity will use the Theme.Dialog style while all other activities in your app will default to the Theme.Light style as set in the element.

There are many application-wide attributes that you can configure in the element; for more information about these settings, see the Public Properties section of ApplicationAttribute.

Источник

Оцените статью