Как изменить manifest apk

Как отредактировать манифест APK? Чтобы отредактировать apk, откройте проводник, перейдите в папку, в которую разархивирован apktool, и откройте папку с ...

Как отредактировать манифест APK?

Чтобы отредактировать apk, откройте проводник, перейдите в папку, в которую разархивирован apktool, и откройте папку с именем вашего apk. Внутри вы найдете кучу папок и файл под названием AndroidManifest. xml. Если вы хотите отредактировать значок, откройте res -> drawable.

Манифест приложения

Открыв приложение в Android Studio и выбрав Project слева, вы найдете манифест в папке верхнего уровня манифестов. Дважды щелкните AndroidManifest. xml, чтобы открыть его.

Как изменить исходный код на Android?

Выполните эту процедуру, чтобы отредактировать файл прямо из Android Code Search.

  1. В Android Code Search (cs.android.com) перейдите к файлу, который вы хотите редактировать.
  2. Щелкните Изменить код. …
  3. Выберите ветку Git, в которой вы хотите отредактировать файл, из раскрывающегося списка Выберите ветку git, затем нажмите Выбрать ветку.

28 окт. 2020 г.

Что подразумевается под редактором манифеста?

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

Вы можете редактировать APK?

Вы можете редактировать любое приложение для Android с помощью инструмента редактирования значков apk. Этот инструмент позволяет быстро редактировать название приложения и значок.

Какой редактор APK лучший?

APK Editor Pro — один из лучших инструментов для редактирования приложений / apk для Android, который вы можете установить на свое устройство Android. Это мощное приложение, которое может редактировать / взламывать файлы apk, чтобы делать множество вещей для удовольствия.

Какая польза от файла манифеста в Android?

Файл манифеста описывает важную информацию о вашем приложении для инструментов сборки Android, операционной системы Android и Google Play. Помимо прочего, в файле манифеста необходимо объявить следующее: Имя пакета приложения, которое обычно соответствует пространству имен вашего кода.

Как открыть файл манифеста?

Поскольку файл обычно имеет простой текстовый формат, вы можете открывать и редактировать его с помощью любой программы для редактирования текста. Если вы используете Windows, вы можете открывать и редактировать файлы МАНИФЕСТА с помощью Блокнота или WordPad. Просто щелкните правой кнопкой мыши файл, который хотите открыть, а затем выберите «Открыть с помощью» в раскрывающемся меню.

Что такое фильтр намерений в Android?

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

Как редактировать исходный код?

Как редактировать сайт с помощью инструментов разработчика

  1. Откройте любую веб-страницу в Chrome и наведите указатель мыши на объект, который вы хотите отредактировать (например, текст, кнопки или изображения).
  2. Щелкните объект правой кнопкой мыши и выберите «Проверить» в контекстном меню. …
  3. Дважды щелкните выбранный объект, и он переключится в режим редактирования.

3 ночей. 2017 г.

Как мне изменить приложение?

Настроить приложение для Android (APK)

  1. Скорее посмотрите учебник.
  2. Обзор CX10W.
  3. Шаг 1. Отредактируйте / замените изображения в приложении.
  4. Шаг 2. Измените макет приложения (необязательно.
  5. Шаг 3. Скомпилируйте приложение.
  6. Шаг 4: Удалить + Установить.
  7. Шаг 5: Готово.

15 колода 2016 г.

Что такое исходный код Android?

Android Open Source Project (AOSP) относится к людям, процессам и исходному коду, из которых состоит Android. … Конечным результатом является исходный код, который вы можете использовать в мобильных телефонах и других устройствах.

Что такое XML-файл в Android?

XML означает расширяемый язык разметки. XML — очень популярный формат, обычно используемый для обмена данными в Интернете. В этой главе объясняется, как анализировать XML-файл и извлекать из него необходимую информацию. Android предоставляет три типа анализаторов XML: DOM, SAX и XMLPullParser.

Как вы объявляете активность в манифесте?

Чтобы объявить о своей активности, откройте файл манифеста и добавьте элемент как дочерний элемент элемент. Например: Единственный обязательный атрибут для этого элемента — android: name, который указывает имя класса действия.

Что такое заставка в Android?

Экран-заставка Android — это первый экран, видимый пользователю при запуске приложения. … Экраны-заставки используются для отображения некоторых анимаций (обычно логотипа приложения) и иллюстраций, в то время как некоторые данные для следующих экранов выбираются.

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

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

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

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

Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки
приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.

Корневым элементом манифеста является <manifest>. Помимо данного элемента обязательными элементами является теги <application> и <uses-sdk>. Элемент <application> является основным элементом манифеста и содержит множество дочерних элементов, определяющих структуру и работу приложения. Порядок расположения элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы.

Описание

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

  <uses-permission />
  <permission />
  <permission-tree />
  <permission-group />
  <instrumentation />
  <uses-sdk />
  <uses-configuration />
  <uses-feature />
  <supports-screens />

  <application>

    <activity>
      <intent-filter>
        <action />
        <category />
        <data />
      </intent-filter>
      <meta-data />
    </activity>

    <activity-alias>
      <intent-filter>
        <action />
        <category />
        <data />
      </intent-filter>
      <meta-data />
    </activity-alias>

    <service>
      <intent-filter>
        <action />
        <category />
        <data />
      </intent-filter>
      <meta-data />
    </service>

    <receiver>
      <intent-filter>
        <action />
        <category />
        <data />
      </intent-filter>
      <meta-data />
    </receiver>

    <provider>
      <grant-uri-permission />
	  <path-permission />
      <meta-data />
    </provider>

    <uses-library />

  </application>

</manifest>

<manifest>

Элемент <manifest> является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:

 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="ru.alexanderklimov.helloandroid" 
android:versionCode="1" 
android:versionName="l.0">

Атрибуты

xmlns:android
определяет пространство имен Android. Оно всегда одно и то же
package
определяет уникальное имя пакета приложения, которое вы задали при создании проекта. Android Marketplace проверяет уникальность при приеме приложения, поэтому рекомендуется использовать свое имя для избежания конфликтов с другими разработчиками. Например, я использую имя своего сайта в обратном порядке: ru.alexanderklimov.appname
android:versionCode
указывает на внутренний номер версии, используемый для сравнения версий программы. «versionCode» должен быть целым, и Android Market использует это для определения, предоставили ли вы новую версию, передавая триггеру обновления на устройствах, на которых установлено ваше приложение. Как правило. начинается с 1 и увеличивается на единицу, если вы выпускаете новую версию приложения.
android:versionName
указывает номер пользовательской версии. Можно использовать строку или строковый ресурс. Этот номер видит пользователь.

<permission>

Элемент <permission> объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности
данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.

android:name
название разрешения
android:label
имя разрешения, отображаемое пользователю
android:description
описание разрешения
android:icon
значок разрешения
android:permissionGroup
определяет принадлежность к группе разрешений
android:protectionLevel
уровень защиты

<uses-permission>

Элемент <uses-permission> запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.

android:name
<uses-permission> имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе <permission> данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например:
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

<permission-tree>

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

<permission-group>

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

<instrumentation>

Элемент <instrumentation> объявляет объект instrumentation, который дает
возможность контролировать взаимодействие приложения с системой. Обычно используется при отладке и тестировании приложения и удаляется из release-версии приложения.

<uses-sdk>

Элемент <uses-sdk> позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android. Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.

Атрибуты
android:minSdkVersion
определяет минимальный уровень API, требуемый для работы приложения. Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте. Вы должны всегда объявлять этот атрибут, например: android:minSdkVersion=»11″. Вы можете ради интереса установить значение 7, а потом 11 и сравнить внешний вид приложения. Например, у младшей версии не будет отображаться ActionBar.
android:maxSDKVersion
позволяет определить самую позднюю версию, которую готова поддерживать ваша программа. Ваше приложение будет невидимым в Google Play для устройств с более свежей версией. Рекомендуется устанавливать в том случае, когда вы точно уверены, что приложение не будет корректно работать на новой платформе.
targetSDKVersion
позволяет указать платформу, для которой вы разрабатывали и тестировали приложение. Устанавливая значение для этого атрибута, вы сообщаете системе, что для поддержки этой конкретной версии не требуется никаких изменений.

<uses-configuration>

Элемент <uses-configuration> указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства. Например, приложение могло бы определить требования обязательного наличия на устройстве физической клавиатуры или USB-nopTa. Спецификация используется, чтобы избежать установки приложения на устройствах, которые не поддерживают требуемую конфигурацию. Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы <uses-configuration> для каждой конфигурации. Вы можете задать любую комбинацию, содержащие следующие устройства

  • reqFiveWayNav — используйте значение true, если приложению требуется устройство ввода, поддерживающее навигацию вверх, вниз, влево, вправо, а также нажатие выделенного элемента. К таким устройствам относятся трекболы и D-pad. В принципе устарело
  • reqHardKeyboard — используйте значение true, если приложению нужна аппаратная клавиатура.
  • reqKeyboardType — позволяет задать тип клавиатуры: nokeys, qwerty, twelvekey, undefined
  • reqNavigation — укажите одно из значений: nonav, dpad, trackball, wheel или undefined, если требуется устройство для навигации
  • reqTouchScreen — если требуется сенсорный экран, то используйте нужное значение из возможных вариантов: notouch, stylus, finger, undefined. Сейчас практически все устройства содержат сенсорный экран, поэтому тоже устарело

Приложение не будет устанавливаться на устройстве, которое не соответствует заданной вами конфигурации. В идеале, вы должны разработать такое приложение, которое будет работать с любым сочетанием устройств ввода. В этом случае <uses-configuration> не нужен.

<uses-feature>

Элемент <uses-feature> объявляет определенную функциональность, требующуюся для работы приложения. Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует камеру с автофокусом. Если устройство не имеет встроенную камеру с автофокусом, приложения не будет инсталлировано.

Пример

android.hardware.camera
требуется аппаратная камера
android.hardware.camera.autofocus
требуется камера с автоматической фокусировкой

Список можно увидеть здесь.

Можно переопределить требование по умолчанию, добавив атрибут required со значением false. Например, если вашей программе не требуется, чтобы камера поддерживала автофокус, то используйте вариант:


<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

<supports-screens>

Элемент <supports-screens> определяет разрешение экрана, требуемое для функционирования устройства. Данный тег позволяет указать размеры экран, для которого был спроектировано приложение. Система будет масштабировать ваше приложение на основе ваших макетов на тех устройствах, которые поддерживают указанные вами разрешения экран. Для других случаев система будет растягивать макет по мере возможности.

Возможные значения

smallScreen
как правило экраны QVGA
normalScreen
стандартные экраны HVGA и WQVGA
largeScreen
большие экраны
xlargeScreen
очень большие экраны, которые превосходят размеры планшетов
anyDensity
установите значение true, если ваше приложение способно масштабироваться для отображения на экране с любым разрешением.

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


<supports-screens 
    android:smallScreen=["false"]
	android:normalScreen=["true"]
	android:largeScreen=["true"]
	android:anyDensity=["false"] />

Начиная с API 13 (Android 3), у тега появились новые атрибуты:

  • requiresSmallestWidthDp — указываем минимальную поддерживаемую ширину экрана (наименьшая сторона устройства) в аппаратно-независимых пикселях. С его помощью можно отфильтровать устройства при размещении приложения в Google Play
  • compatibleWidthLimitDp — задаёт верхнюю границу масштабирования для вашего приложения. Если экран устройства выходит за указанную границу, система включит режим совместимости.
  • largestWidthLimitDp — задаёт абсолютную верхнюю границу, за пределами которой ваше приложение точно не может быть смаштабировано. В этом случае приложение запускается в режиме совместимости, которую нельзя отключить. Следует избегать подобных ситуаций и разрабатывать макеты для любых экранов.

<supports-screens android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens"="true"
    android:requiresSmallestWidthDp="480"
    android:compatibleWidthLimitDp="600"
    android:largestWidthLimitDp="720" />

<application>

Элемент <application> один из основных элементов манифеста, содержащий описание компонентов приложения, доступных в пакете: стили, значок и др. Содержит дочерние элементы, которые объявляют каждый из компонентов, входящих в состав приложения. В манифесте может быть только один элемент <application>.

<activity>

Элемент <activity> объявляет активность. Если приложение содержит несколько активностей, не забывайте объявлять их в манифесте, создавая для каждой из них свой элемент <activity>. Если активность не объявлена в манифесте, она не будет видна системе и не будет запущена при выполнении приложения или будет выводиться сообщение об ошибке.

Для этого класса зарегистрирован фильтр вызовов, определяющий, что это действие запущено в приложении (действие android:name=«android.intent.action.MAIN»). Определение категории (категория android:name=«android.intent.category.LAUNCHER» ) определяет, что это приложение добавлено в директорию приложений на Android-устройстве. Значения @ направляют файлы ресурсов, которые содержат актуальные значения. Это упрощает работу с разными ресурсами, такими как строки, цвета, значки.

Пример:


<activity android:name="ru.alexanderklimov.HelloWorld.AboutActivity" 
android:label="@string/app_name">
Атрибуты
android:name
имя класса. Имя должно включать полное обозначение пакета, но т. к. имя пакета уже определено в корневом элементе
<manifest>, имя класса, реализующего деятельность, можно записывать в сокращенном виде, опуская имя пакета
android:label
текстовая метка, отображаемая пользователю
android:launcMode
управление стеком. Подробнее
android:parentActivityName
В приложениях с API 16 и выше используется эта строка. Она сообщает, какая активность является родительской. Для старых устройств используйте метаданные


<meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".MainActivity" />
android:exported
Позволяет или запрещает запускать активность другим приложениям. Если атрибута нет, то по умолчанию равно false и другие приложения не могут запускать вашу активность. Но если у активности есть интент-фильтры, то по умолчанию это значение будет уже равно true. Это может запутать новичков. Поэтому, если вы хотите запретить запуск через сторонние приложения, то явно указывайте нужное значение.

Элемент <activity> содержит множество других атрибутов, определяющих разрешения, ориентацию экрана и т. д.

Изменение конфигурации во время выполнения программы

При изменении языка, региона или аппаратной конфигурации Android прерывает работу всех приложений и затем запускает их повторно, перезагружая значения из ресурсов. Подобное поведение не всегда уместно и желательно. Например, некоторые изменения конфигурации (ориентация экрана в пространстве, доступность клавиатуры) могут произойти только лишь из-за того, что пользователь повернул устройство или выдвинул клавиатуру. Вы можете настраивать, каким образом ваше приложение будет реагировать на подобные изменения, обнаруживая их и выполняя собственные действия. Чтобы заставить Активность отслеживать изменения конфигурации при выполнении программы, добавьте в ее узел в манифесте атрибут android:configChanges, указав, какие именно события хотите обрабатывать.

Перечислим некоторые значения, с помощью которых можно описать изменения конфигурации:

  • оrientation — положение экрана изменено с портретного на альбомное (или наоборот);
  • keyboardHidden — клавиатура (или D-pad и другое устройство) выдвинута или спрятана;
  • fontScale — пользователь изменил предпочтительный размер шрифта;
  • locale — пользователь выбрал новые языковые настройки;
  • keyboard — изменился тип клавиатуры; например, телефон может иметь 12-клавишную панель, при повороте которой появляется полноценная клавиатура. Или была подключена внешняя клавиатура.
  • touchscreen или navigation — изменился тип клавиатуры или способ навигации. Как правило, такие события не встречаются.
  • mcc или mnc — обнаружена новая SIM-карта, при этом изменились страна и код сотовой сети соответственно.
  • uiMode — изменился режим пользовательского интерфейса, например, при переключении между автомобильным, дневным и ночным режимами.
  • screenLayout — изменились характеристики экрана, например, при активации другого дисплея.
  • screenSize — изменлись размеры экрана, например, при смене ориентации. Появилось в Android 3 (API 12)
  • smallestScreenSize — изменился физический размер экрана, например, при подключении внешнего дисплея. Появилось в Android 3 (API 12)

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

Наличие атрибута android:configChanges отменяет перезапуск приложения при заданных изменениях конфигурации. Вместо этого внутри активности срабатывает метод onConfigurationChanged(). Переопределите его, чтобы появилась возможность обрабатывать изменения в конфигурации. Используйте переданный объект Configuration, чтобы получить новые значения. Не забудьте вызвать одноименный метод из родительского класса и перезагрузить измененные значения со всех ресурсов, которые используются внутри активности.


@Override
public void onConfigurationChanged(Configuration _newConfig) {
  super.onConfigurationChanged(_newConfig);
  [ ... Обновите пользовательский интерфейс, используя данные из ресурсов ... ]
  if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    [ ... Реакция на измененную ориентацию экрана ... ]
  }
  if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
    [ ... Реакция на выдвигание/задвигание клавиатуры ... ]
  }
}

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

Любые изменения конфигурации, которые не были явно помечены для обработки внутри вашего приложения, приведут к перезапуску активности, минуя вызов метода onConfigurationChanged().

<intent-filter>

Каждый тег <activity> поддерживает вложенные узлы <intent-filter>. Элемент <intent-filter> определяет типы намерений, на которые могут ответить деятельность, сервис или приемник намерений. Фильтр намерений
объявляет возможности его родительского компонента — что могут сделать деятельность или служба и какие типы рассылок получатель может обработать. Фильтр намерений предоставляет для компонентов-клиентов возможность получения намерений объявляемого типа, отфильтровывая те, которые не значимы для компонента, и содержит дочерние элементы <action>, <category>, <data>.

<action>

Элемент <action> добавляет действие к фильтру намерений. Элемент <intent-filter> должен содержать один или более элементов <action>. Если в элементе <intent-fiiter> не будет этих элементов, то объекты намерений не пройдут через фильтр. Пример объявления действия:

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

<category>

Элемент <category> определяет категорию компонента, которую должно обработать намерение. Это строковые константы, определенные в классе
intent, например:

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

<data>

Элемент <data> добавляет спецификацию данных к фильтру намерений. Спецификация может быть только типом данных (атрибут mimeType), URI или ТИПОМ данных вместе с URI. Значение URI определяется отдельными атрибутами для каждой из его частей, т. е. URI делитСЯ на части: android:scheme, android:host, android:port, android:path или android:pathPrefix, android:pathPattern.

<meta-data>

Элемент <meta-data> определяет пару «имя-значение» для элемента дополнительных произвольных данных, которыми можно снабдить родительский
компонент. Составляющий элемент может содержать любое число элементов <meta-data>.

<activity-alias>

Элемент <activity-alias> — это псевдоним для Activity, определенной в атрибуте targetActivity. Целевая деятельность должна быть в том же самом приложении, что и псевдоним, и должна быть объявлена перед псевдонимом деятельности в манифесте. Псевдоним представляет целевую деятельность как независимый объект. У псевдонима может быть свой собственный набор фильтров намерений, определяющий, какие намерения могут активизировать целевую деятельность и как система будет обрабатывать эту деятельность. Например, фильтры намерений на псевдониме деятельности могут определить флаги android:name=»android.intent.action.MAIN» и android:name=»android.intent.category.LAUNCHER», заставляя целевую деятельность загружаться при запуске приложения даже в том случае, когда в фильтрах намерений на целевой деятельности эти флаги не установлены.

<service>

Элемент <service> объявляет службу как один из компонентов приложения. Все службы должны быть представлены элементом <service> в файле манифеста. Службы, которые не были объявлены, не будут обнаружены системой и никогда не будут запущены. Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д. Поддерживает вложенные узлы <intent-fiiter>

В Android 11 появилась новая запись для работы службы в режиме Foreground (активное состояние).


<service ...
        android:foregroundServiceType="location|camera|microphone" />

<receiver>

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

<provider>

Элемент <provider> объявляет контент-провайдера (источник данных) для управления доступом к базам данных. Все контент-провайдеры, которые являются частью приложения, должны быть представлены в элементах <provider> в файле манифеста. Если они не объявлены, они не будут работать, т.к. система их не сможет увидеть. Элемент <provider> содержит свой набор дочерних элементов для установления разрешений доступа к данным:

  • <grant-uri-permission>;
  • <path-permission>;
  • <meta-data>

Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д.

<grant-uri-permission>

Элемент <grant-uri-permission> является дочерним элементом для <provider>. Он определяет, для кого можно предоставить разрешения на подмножества данных контент-провайдера. Предоставление разрешения является способом допустить к подмножеству данных, предоставляемым контент-провайдером, клиента, у которого нет разрешения для доступа к полным данным. Если атрибут granturiPermissions контент-провайдера имеет значение true, то разрешение предоставляется для любых данных, поставляемых контент-провайдером. Однако, если атрибут поставлен в false, разрешение можно предоставить только подмножествам данных, которые определены этим элементом. Контент-провайдер может содержать любое число элементов <grant-uri-permission>.

<path-permission>

Элемент <path-permission> — дочерний элемент для <provider>. Определяет путь и требуемые разрешения для определённого подмножества данных в пределах поставщика оперативной информации. Этот элемент может быть определён многократно, чтобы поставлять множественные пути.

<uses-library>

Элемент <uses-library> определяет общедоступную библиотеку, с которой должно быть скомпоновано приложение. Этот элемент указывает системе на необходимость включения кода библиотеки в загрузчик классов для пакета приложения. Каждый проект связан по умолчанию с библиотеками Android, в которые включены основные пакеты для сборки приложений (с классами общего назначения типа Activity, Service, Intent, View, Button, Application, ContentProvider и т. д.). Однако некоторые пакеты находятся в отдельных библиотеках, которые автоматически не компонуются с приложением. Если же приложение использует пакеты из этих библиотек или других, от сторонних разработчиков, необходимо сделать явное связывание с этими библиотеками и манифест обязательно должен содержать отдельный элемент <uses-library>.

Реклама
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Asked
10 years, 4 months ago

Viewed
8k times

Is it possible to change AndroidManifest.xml in runtime programatically? If it is possible, how can I change the following programatically int he AndroidManifest while running app?

android:configChanges="orientation|keyboardHidden"

  • java
  • android
  • android-manifest

Maihan Nijat's user avatar

Maihan Nijat

8,8469 gold badges58 silver badges106 bronze badges

asked Oct 13, 2012 at 5:08

MCA09020's user avatar

MCA09020MCA09020

1131 silver badge5 bronze badges

2 Answers

No — it’s not possible to change the Android AndroidManifest.xml in runtime.
But, you CAN do changes in runtime programatically — see here (look for onConfigurationChanged).

answered Oct 13, 2012 at 5:14

Nir Alfasi's user avatar

Nir AlfasiNir Alfasi

52.7k11 gold badges84 silver badges127 bronze badges

1

  • in my application there are 5 activity in which 1 activity user set the sensor is ON or OFF.means user decide the screenOrientation of on activity at run time.I already use onConfigurationChanged() method but problem is xml is reload.if set <android:configChanges=»orientation|keyboardHidden»> in Manifest.xml that time create a layout size problem.

    Oct 13, 2012 at 5:46

There is no way to set the configChanges attribute programmatically

answered Oct 13, 2012 at 5:12

Shashank Kadne's user avatar

Shashank KadneShashank Kadne

7,8836 gold badges41 silver badges54 bronze badges

1

  • Make sure before you deny an approach, even if there is a slim chance, dont ignore it, as alfasin mentioned, see here

    Oct 13, 2012 at 5:26

  • The Overflow Blog
  • Featured on Meta

Linked

Related

Hot Network Questions

  • How to temporarily catch leaks trickling down the outside of a pipe

  • Cycle symmetric Sort for arguments of a function. Put trace in canonical order

  • Do astronauts use plumber’s bifocals?

  • Is every Clifford gate conjugate to a diagonal Clifford gate?

  • Why should bulk modulus always be positive?

  • Execute reverse search in terminal mode at startup

  • Carbon fiber frames and household heating/radiators: how close is too close?

  • How can I solve this algorithmic task in Python?

  • Distribute arguments over a function in all ordered combinations

  • I’m new to D&D: where to begin?

  • Added an eye for the Newman projection

  • Is 2 years of recent continuous employment required to get a mortgage?

  • I screwed up a talk — how to move on

  • A curve line with label connecting two tabular cells with TikZ

  • How does putting an LED in parallel with an 8-bit computer load affect the voltage/current of a circuit?

  • Human oriented string comparison

  • Does the noun ‘curb’ have the meaning of the word ‘bridle’?

  • how to execute a string block from a file

  • Get total sales grouped by customer and product

  • Do certain flights smell worse than others?

  • How can I overcome the 30 ft distance requirement of a surge protector?

  • Why is Turkey campaigning to get their name changed to Türkiye in English but not other languages?

  • How can lossless compression ever exist?

  • Man of War: A Numbers Problem

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Asked
10 years, 4 months ago

Viewed
8k times

Is it possible to change AndroidManifest.xml in runtime programatically? If it is possible, how can I change the following programatically int he AndroidManifest while running app?

android:configChanges="orientation|keyboardHidden"

  • java
  • android
  • android-manifest

Maihan Nijat's user avatar

Maihan Nijat

8,8469 gold badges58 silver badges106 bronze badges

asked Oct 13, 2012 at 5:08

MCA09020's user avatar

MCA09020MCA09020

1131 silver badge5 bronze badges

2 Answers

No — it’s not possible to change the Android AndroidManifest.xml in runtime.
But, you CAN do changes in runtime programatically — see here (look for onConfigurationChanged).

answered Oct 13, 2012 at 5:14

Nir Alfasi's user avatar

Nir AlfasiNir Alfasi

52.7k11 gold badges84 silver badges127 bronze badges

1

  • in my application there are 5 activity in which 1 activity user set the sensor is ON or OFF.means user decide the screenOrientation of on activity at run time.I already use onConfigurationChanged() method but problem is xml is reload.if set <android:configChanges=»orientation|keyboardHidden»> in Manifest.xml that time create a layout size problem.

    Oct 13, 2012 at 5:46

There is no way to set the configChanges attribute programmatically

answered Oct 13, 2012 at 5:12

Shashank Kadne's user avatar

Shashank KadneShashank Kadne

7,8836 gold badges41 silver badges54 bronze badges

1

  • Make sure before you deny an approach, even if there is a slim chance, dont ignore it, as alfasin mentioned, see here

    Oct 13, 2012 at 5:26

  • The Overflow Blog
  • Featured on Meta

Linked

Related

Hot Network Questions

  • At what point is it «legal» to overthrow the government?

  • Get total sales grouped by customer and product

  • Identifying an edge INSIDE an ‘always’ block

  • What is the distinction between «nombrar» and «llamar»?

  • Added an eye for the Newman projection

  • Designing a portable space elevator

  • Constructing a tblr programmatically in expl3

  • UK visa requirement abolished for Colombian citizens, but what needs to be shown at border for 3 month stay?

  • How to temporarily catch leaks trickling down the outside of a pipe

  • The body in the cellar

  • Windows: Enable/Disable Lock Screen Password With Shortcut

  • Does the noun ‘curb’ have the meaning of the word ‘bridle’?

  • Distribute arguments over a function in all ordered combinations

  • What replaces Mr/Mrs/Ms as a title courtesy/respect in a world that cares less about gender?

  • Is SQL Server able to use internal parallelism for an update statement?

  • Multithreading vs DPCC SYCL Programming for OR computational implementations

  • Are there any papers where two (or more) authors share the same full name?

  • Weak law vs strong law of large numbers — intuition

  • Do astronauts use plumber’s bifocals?

  • How to exactly calculate the volume?

  • Are there any examples of orienteering (off-trail) route-finding software?

  • Why is 1Password sign-in to new device secure without MFA?

  • A curve line with label connecting two tabular cells with TikZ

  • Involving a witness in the settling of an objection

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Последнее обновление: 15.10.2021

Каждое приложение содержит файл манифеста AndroidManifest.xml. Данный файл определяет важную информацию о
приложении — название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д. Данный файл можно найти в проекте в папке
manifests:

AndroidManifest.xml в Android Studio

Файл манифеста может выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ViewApp">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Элементом корневого уровня является узел manifest. В данном случае только определяется пакет приложения —
package="com.example.viewapp". Собственно это определение файла манифеста по умолчанию. В каждом конкретном случае может отличаться пакет приложения,
остальное содержимое при создании проекта с пустой activity будет аналогичным.

Большинство настроек уровня приложения определяются элементом application. Ряд настроек задаются с помощью атрибутов. По умолчанию применяются
следующие атрибуты:

  • android:allowBackup указывает, будет ли для приложения создаваться резервная копия. Значение
    android:allowBackup="true" разрешает создание резервной копии.

  • android:icon устанавливает иконку приложения. При значении android:icon="@mipmap/ic_launcher"
    иконка приложения берется из каталога res/mipmap

  • android:roundIcon устанавливает круглую иконку приложения. Также берется из каталога res/mipmap

  • android:label задает название приложение, которое будет отображаться на мобильном устройстве в списке приложений и
    в заголовке. В данном случае оно хранится в строковых ресурсах — android:label="@string/app_name".

  • android:supportsRtl указывает, могут ли использоваться различные RTL API — специальные API для работы с правосторонней ориентацией
    текста (например, для таких языков как арабский или фарси).

  • android:theme устанавливает тему приложения. Подробно темы будут рассмотрены далее, а пока достаточно знать, что тема определяет
    общий стиль приложения. Значение @style/Theme.ViewApp" берет тему «Theme.ViewApp» из каталога res/values/themes

Вложенные элементы activity определяют все используемые в приложении activity. В данном случае видно, что в приложении есть только одна
activity — MainActivity.

<activity android:name=".MainActivity">
	<intent-filter>
		<action android:name="android.intent.action.MAIN" />

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

Элемент intent-filter в MainActivity указывает, как данная activity будет использоваться. В частности, с помощью узла
action android:name="android.intent.action.MAIN", что данная activity будет входной точкой в приложение и не должна получать какие-либо данные извне.

Элемент category android:name="android.intent.category.LAUNCHER" указывает, что MainActivity будет представлять стартовый экран, который отображается при запуске приложения.

Файл манифеста может содержать множество элементов, которые имеют множество атрибутов. И все возможные элементы и их атрибуты можно найти в документации.
Здесь же рассмотрим некоторые примеры использования.

Определение версии

С помощью атрибутов элемента manifest можно определить версию приложения и его кода:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp"
	android:versionName="1.0"
    android:versionCode="1">
	
<!-- остальное содержимое-->

</manifest>

Атрибут android:versionName указывает на номер версии, который будет отображаться пользователю и на которую будут ориентироваться
пользователи при работе с приложением.

Тогда как атрибут android:versionCode представляет номер версии для внутреннего использования. Этот номер только определяет, что одна версия приложения более новая,
чем какая-то другая с меньшим номером номером версии. Этот номер не отображается пользователям.

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

Установка версии SDK

Для управления версией android sdk в файле манифеста определяется элемент <uses-sdk>. Он может использовать следующие атрибуты:

  • minSdkVersion: минимальная поддерживаемая версия SDK

  • targetSdkVersion: оптимальная версия

  • maxSdkVersion: максимальная версия

Версия определяется номером API, например, Jelly Beans 4.1 имеет версию 16, а Android 11 имеет версию 30:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp"
	android:versionName="1.0"
    android:versionCode="1">
	<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="30" />
<!-- остальное содержимое-->

</manifest>

Установка разрешений

Иногда приложению требуются разрешения на доступ к определенным ресурсам, например, к списку контактов, камере и т.д. Чтобы приложение могло работать
с тем же списком контактов, в файле манифесте необходимо установить соответствующие разрешения. Для установки разрешений применяется элемент
<uses-permission>:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp">
	<uses-permission android:name="android.permission.READ_CONTACTS" />
	<uses-permission android:name="android.permission.CAMERA" android:maxSdkVersion="30" />
<!-- остальное содержимое-->

</manifest>

Атрибут android:name устанавливает название разрешения: в данном случае на чтение списка контактов и использование камеры.
Опционально можно установить максимальную версию sdk посредством атрибута android:maxSdkVersion, который принимает номер API.

Поддержка разных разрешений

Мир устройств Android очень сильно фрагментирован, здесь встречаются как гаджеты с небольшим экраном, так и большие широкоэкранные телевизоры.
И бывают случаи, когда надо ограничить использование приложения для определенных разрешений экранов. Для этого в файле манифеста определяется элемент
<supports-screens>:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp">
	
	<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="false"
        android:xlargeScreens="true" />
<!-- остальное содержимое-->

</manifest>

Данный элемент принимает четыре атрибута:

  • android:largeScreens — экраны с диагональю от 4.5 до 10″

  • android:normalScreens — экраны с диагональю от 3 до 4.5″

  • android:smallScreens — экраны с диагональю меньше 3″

  • android:xlargeScreens — экраны с диагональю больше 10″

Если атрибут имеет значение true, то приложение будет поддерживаться соответствующим размером экрана

Запрет на изменение ориентации

Приложение в зависимости от положения гаджета может находиться в альбомной и портретной ориентации. Не всегда это бывает удобно.
Мы можем сделать, чтобы приложение вне зависимости от поворота гаджета использовало только одну ориентацию. Для этого в файле манифеста у требуемой activity
надо установить атрибут android:screenOrientation. Например, запретим альбомную ориентацию:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.viewapp"
    android:versionName="1.0"
    android:versionCode="1" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ViewApp">
        <activity android:name=".MainActivity"
		
            android:screenOrientation="portrait">
			
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Значение android:screenOrientation="portrait" указывает, что данная activity будет находиться только в портретной ориентации.
Если же надо установить только альбомную ориентацию, тогда надо использовать значение android:screenOrientation="landscape"

Понравилась статья? Поделить с друзьями:
  • Как изменить machineguid
  • Как изменить mac адрес через командную строку
  • Как изменить mac адрес устройства
  • Как изменить mac адрес телефона android
  • Как изменить mac адрес телевизора samsung