Фильтр и активность Android Manifest-intent - программирование
Подтвердить что ты не робот

Фильтр и активность Android Manifest-intent

Может ли кто-нибудь объяснить следующие строки в манифесте -

    <activity
        android:name=".AboutUs"
        android:label="@string/app_name">
        <intent-filter >
            <action android:name="com.example.app1.ABOUT" />
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>

    </activity>    

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

Спасибо

4b9b3361

Ответ 1

android:name=".AboutUs"

Это имя вашего класса Activity, точка спереди - это сокращенная нотация для вашего пакета. Таким образом, это фактически означает com.your.package.name.AboutUs, что означает, что ваш java файл, представляющий это действие, называется AboutUs.java

android:label="@string/app_name"

label - это строка, которая отображается в панели запуска (если активность указана в панели запуска) и в верхней части окна, когда активность открыта.

<intent-filter > ... </intent-filter>

фильтр намерения определяет намерения, которые ваша деятельность "слушает" для запуска.

<action android:name="com.example.app1.ABOUT" />
<category android:name="android.intent.category.DEFAULT"/>

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

В вашем случае ваше действие, которое вы слушаете com.example.app1.ABOUT, является настраиваемым действием, специфичным для вашего приложения, а не одним из действий системы.

Итак, вот что намерение, которое начнет эту конкретную деятельность, может выглядеть так:

Intent i = new Intent();
i.setAction("com.example.app1.ABOUT");
i.addCategory("android.intent.category.DEFAULT");
startActivity(i);

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

Ответ 2

Для ACTION у вас есть этот ответ и для категории DEFAULT у вас есть этот ответ

Ответ 3

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

  • Атрибут android: name является единственным обязательным атрибутом - он определяет имя класса для этого действия.
  • Атрибут android: label является читаемым пользователем ярлыком для приложения в целом и меткой по умолчанию для каждого из компонентов приложения

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

  • Элемент указывает, что это "основная" точка входа в приложение.
  • Элемент указывает, что это действие должно быть указано в панели запуска системного приложения (чтобы пользователи могли запускать это действие).

Обратитесь к http://developer.android.com/guide/components/activities.html