Яка мета "android.intent.category.DEFAULT"?


104

Яка мета використання android.intent.category.DEFAULTв області Категорія фільтри намірів?


2
Ви говорите, що це точка входу для вашої програми за замовчуванням. Дивіться: developer.android.com/reference/android/content/…
Blundell

@Blundell: тож якщо приходить неявний намір, буде викликана діяльність із замовчуванням як її категорія у фільтрі намірів?
Правi

1
Я вважаю, що це означає, що це діяльність із використання так "це для використання у фільтрах намірів, зазначених у пакунках"
Блонделл

якщо більше однієї активності містять за замовчуванням як їх категорію, у відповідних фільтрах намірів, яка діяльність буде називатися?
Правi

Якщо вони мають різні фільтри намірів, це буде залежати від наміру.
Blundell

Відповіді:


112

Категорії використовуються для неявних намірів. Отже, якщо ваша активність може бути запущена неявним наміром, коли жодна інша конкретна категорія не призначена діяльності, фільтр намірів діяльності повинен включати цю категорію. (навіть якщо у фільтрі намірів є інші категорії). Якщо ви впевнені, що вашу діяльність потрібно викликати будь-якою іншою категорією, не використовуйте за замовчуванням.

Якщо встановити категорію за замовчуванням, не означає, що ця активність буде використовуватися за замовчуванням під час запуску програми. Діяльність просто каже системі, що " О, я можу почати роботу, навіть якщо категорія інтенції для початківців встановлена ​​на" Ніщо ! "


27
Це було насправді зрозумілим поясненням. Порівняйте цю відповідь з документами: "Встановіть, якщо діяльність повинна бути опцією для дії за замовчуванням (центральне натискання) на виконання фрагмента даних. Налаштування цього приховуватиме від користувача будь-які дії без його встановлення під час виконання дії на деяких дані "Як важко написати зрозумілий опис ...
Андреас

Я не впевнений у його мандаті, хоча, як це здається необов’язковим, оскільки діяльність без жодного фільтру намірів все ще може бути названа неявною діяльністю
humblerookie

6
Документація тепер зрозуміліша IMO: Android автоматично застосовує категорію CATEGORY_DEFAULT до всіх неявних намірів, переданих стартовій активності () та startActivityForResult (). Отже, якщо ви хочете, щоб ваша діяльність отримувала неявні наміри, вона повинна включати категорію "android.intent.category.DEFAULT" у свої фільтри намірів.
shkschneider

2
@humblerookie. Я спробував це, і це не працює без категорії DEFAULT. Якщо ти не віриш мені, тест для себе.
Боб Уеланд

2
Якби тільки всі підручники були написані таким чином. Чому ми все ще використовуємо дерев’яну мову в 2018 році?
SudoPlz

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
Я вважаю цю відповідь більш корисною для моїх поточних фільтрів щодо розуміння ситуації. спасибі.
Неонова вар

1

Це насправді для того, щоб переконатися, що ваші інші дії можуть бути викликані під час роботи програми. LAUNCHER зробить діяльність, яка в ній є першою, яка починається. Щоб використовувати наміри дістатись до інших видів діяльності, їх потрібно вказати як "фактичні" дії, поставивши DEFAULT. Це те, що я знаю, тому не цитуйте мене, якщо це неправильно.


3
Ви повинні прагнути надати посилання на свої претензії. "Не цитуйте мене, якщо це неправильно" не дозволяє вам перекрити це правило.
verybadalloc

У мене є проект, над яким я працював, вивчаючи кодування Android. Якщо ви хочете вихідні файли, я з радістю надішлю їх.
CHT

1

Діяльність потребує підтримки CATEGORY_DEFAULT, щоб їх можна було знайти Context.startActivity ().

Для отримання неявних намірів потрібно включити категорію CATEGORY_DEFAULT у фільтр намірів. Методи startActivity () та startActivityForResult () трактують усі наміри так, ніби вони оголосили категорію CATEGORY_DEFAULT. Якщо ми не оголосимо це у нашому фільтрі намірів, жодні неявні наміри не вирішать нашу діяльність.


0

Він використовується для оголошення деякої операції як дії за замовчуванням (як підказує її назва). Розглянемо, що у нас є додаток для блокнотів (посилаючись на зразок блокнота Android). Перша сторінка програми складається зі списку всіх файлів блокнота. Якщо вибрано один файл блокнота, можна виконати одну з таких операцій, як редагування примітки, видалення примітки тощо. Але я хочу зробити редагування як мою дію за замовчуванням, що означає, що коли я натискаю центральну кнопку своєї клавіатури, вікно редагування має бути відкритим.


1
Якщо ви подивитесь на приклад блокнота Android, усі дії позначені за замовчуванням: 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.