Подтвердить что ты не робот

Какова цель категорий намерений?

Может ли кто-нибудь объяснить мне цель категорий Intent? Когда я должен делать свои собственные и так далее? Единственное, что написано в категориях Intent в моей книге, это то, что они могут группировать намерения?.

4b9b3361

Ответ 1

Одна только категория бесполезна, они используются для описания возможной цели "неявного намерения" в intent-filter.

Когда вы знаете, какой класс/активность вы хотите запустить и используете startActivity() или startActivityForResult(), он назвал "явным намерением".

Здесь показана аналогия того, как работают неявные намерения:

Представьте, что все ваши приложения сидят в большой комнате и ничего не делают. Затем другое приложение, пусть и Dropbox, нуждается в том, чтобы кто-то открыл PDF файл. Приложение Dropbox переходит в систему и говорит: "Эй, кто-то необходимо открыть этот PDF файл..." (Это посылает неявное намерение).

Теперь система переходит в комнату и кричит: "Кто из вас может отображать PDF файл?". Приложения, которые могут встать и система видит их (эти приложения имеют активность с соответствующими).

Затем он предлагает вам диалог, в котором вы можете выбрать один из приложений: Complete action using


Если вы хотите сделать некоторые из ваших Activity/BroadcastReceivers/Services доступными вне пределов ваших приложений, вы можете использовать манифест Android, чтобы объявить ему "фильтр намерений", поэтому он открывается, когда запускается система или приложение "неявное намерение", которое соответствует.

Вы делаете это (например) для Activity, которое должно быть открыто из запуска:

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

Это прослушивает ACTION_MAIN -действие, запускаемое Androids Launcher (CATEGORY_LAUNCHER).

У вас есть два дочерних элемента в вашем "целевом фильтре":

  • action. Это указывает, какое действие "фильтр намерения" должен слушайте.
  • Один или несколько category s. Это указывает, как должна осуществляться деятельность называется.

Один из category может быть (например) android.intent.category.DEFAULT, который сообщает, что активность запускается нормально в полноэкранном режиме. Например, android.intent.category.TAB -категория объявляет это действие как вкладку в TabActivity, поэтому ее можно открыть только как вкладку.

Другим примером может быть добавление android.intent.category.PREFERENCE -категории, которая объявила бы активность в качестве настроек-активности.


Объявление вашего собственного category не является ни возможным, ни необходимым.

Далее вам нужно понять, что эти события запускаются приложением System/Another, и вы можете указать только, хотите ли и как вы будете реагировать, когда они будут запущены.