Какова цель «android.intent.category.DEFAULT»?


104

Какова цель использования android.intent.category.DEFAULTв поле «Категория» фильтров намерений?


2
Вы говорите, что это точка входа по умолчанию для вашего приложения. См .: developer.android.com/reference/android/content/…
Бланделл,

@Blundell: значит, если приходит неявное намерение, будет вызываться действие со значением по умолчанию в качестве категории в фильтре намерений?
Pravy

1
Я считаю, что это использовалось, чтобы подразумевать, что это действие, чтобы использовать «да», «это для использования в фильтрах намерений, указанных в пакетах»
Бланделл

Если более чем одно действие содержит категорию по умолчанию, в соответствующих фильтрах намерений какое действие будет вызываться?
Pravy

Если у них разные фильтры намерений, это будет зависеть от намерений.
Blundell

Ответы:


112

Категории используются для неявных намерений. Итак, если действие может быть запущено неявным намерением, когда действию не назначена никакая другая конкретная категория, фильтр намерения действия должен включать эту категорию. (даже если у вас есть другие категории в фильтре Intent). Если вы уверены, что ваше действие должно вызываться с любой другой категорией, не используйте Default.

Установка категории по умолчанию не означает, что это действие будет использоваться по умолчанию при запуске вашего приложения. Действие просто говорит системе: « О, я мог бы быть запущен, даже если для категории начального намерения установлено значение« Ничего » ! »


27
На самом деле это было понятное объяснение. Сравните этот ответ с документами: «Установите, должно ли действие быть опцией для действия по умолчанию (центральное нажатие), которое должно выполняться над частью данных. Установка этого параметра скроет от пользователя любые действия без его установки при выполнении действия над некоторыми данными. data «Насколько сложно написать понятное описание ...
Андреас

Я не уверен насчет его мандата, поскольку он кажется необязательным, поскольку действие без какого-либо фильтра намерений все еще может называться неявным действием
humblerookie

6
Документация теперь более понятна. IMO: Android автоматически применяет категорию CATEGORY_DEFAULT ко всем неявным намерениям, переданным в startActivity () и startActivityForResult (). Поэтому, если вы хотите, чтобы ваше действие получало неявные намерения, оно должно включать категорию "android.intent.category.DEFAULT" в свои фильтры намерений.
шкшнейдер 07

2
@humblerookie. Я пробовал, и он не работает без категории DEFAULT. Если не верите, проверьте себя.
Боб Уиланд,

2
Если бы только все учебники были написаны таким образом. Почему мы все еще используем деревянный язык в 2018 году?
SudoPlz 04

24

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

Я думаю, что термин «дефолт» следует понимать как « кандидат по умолчанию ». Если действие над фрагментом данных разрешается для нескольких действий, тогда Android представит пользователю всех кандидатов, и пользователь сможет выбрать предпочтительное значение по умолчанию.

Ссылка:

http://developer.android.com/guide/components/intents-filters.html

Выдержка с этой страницы:

Android обрабатывает все неявные намерения, переданные tostartActivity (), как если бы они содержали хотя бы одну категорию: «android.intent.category.DEFAULT» (константа CATEGORY_DEFAULT). Следовательно, действия, которые хотят получать неявные намерения, должны включать "android.intent.category.DEFAULT" в свои фильтры намерений. (Фильтры с настройками «android.intent.action.MAIN» и «android.intent.category.LAUNCHER» являются исключением. Они отмечают действия, с которых начинаются новые задачи и которые отображаются на экране запуска. Они могут включать «android.intent .category.DEFAULT "в списке категорий, но не обязательно.)


@Comptrol, вашего ответа больше нет. Он растет. :-)
Эллен Спертус

Да, но я его откатил до того состояния, в котором было. Так что я вообще ничего не менял.
Özgür

1
Я считаю, что этот ответ более полезен для моих текущих фильтров намерений для понимания ситуации. Спасибо.
Neon Warge

1

На самом деле это делается для того, чтобы во время работы приложения можно было вызывать другие ваши действия. LAUNCHER сделает действие, в котором оно есть, первым, которое запускается. Чтобы использовать намерения для перехода к другим действиям, они должны быть указаны как «фактические» действия, поставив ПО УМОЛЧАНИЮ. Это из того, что я знаю, поэтому не цитируйте меня, если это неправильно.


3
Вы должны стремиться предоставить ссылки для ваших требований. «не цитируйте меня, если это неправильно» не позволяет вам отменять это правило.
verybadalloc 02 авг.13,

Ссылка, которая у меня есть, - это проект, над которым я работал, когда изучал программирование для Android. Если вам нужны исходные файлы, я с радостью их пришлю.
CHT

1

Действия должны поддерживать CATEGORY_DEFAULT, чтобы их можно было найти с помощью Context.startActivity ().

Чтобы получать неявные намерения, вы должны включить категорию CATEGORY_DEFAULT в фильтр намерений. Методы startActivity () и startActivityForResult () обрабатывают все намерения, как если бы они объявили категорию CATEGORY_DEFAULT. Если мы не объявим это в нашем фильтре намерений, никакие неявные намерения не будут разрешены для нашей активности.


0

Он используется для объявления некоторой операции действием по умолчанию (как следует из названия). Допустим, у нас есть приложение для блокнота (имеется в виду пример блокнота для Android). Первая страница приложения состоит из списка всех файлов блокнота. Когда выбран один файл блокнота, может быть выполнена одна из операций, таких как редактирование заметки, удаление заметки и т. Д. Но я хочу сделать редактирование своим действием по умолчанию, а это значит, что когда я нажимаю центральную кнопку на клавиатуре, должно открываться окно редактирования.


1
Если вы посмотрите на пример Android Notepad, все действия помечены по умолчанию: developer.android.com/reference/android/content/Intent.html
Питер Аджтай,

0

https://developer.android.com/guide/components/intents-filters

Чтобы получать неявные намерения, вы должны включить категорию CATEGORY_DEFAULT в фильтр намерений. Методы startActivity () и startActivityForResult () обрабатывают все намерения, как если бы они объявили категорию CATEGORY_DEFAULT. Если вы не объявите эту категорию в своем фильтре намерений, никакие неявные намерения не будут разрешены для вашей активности.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.