Jaki jest cel „android.intent.category.DEFAULT”?


104

Jaki jest cel używania android.intent.category.DEFAULTw polu Kategoria filtrów intencji?


2
Mówisz, że to domyślny punkt wejścia dla twojej aplikacji. Zobacz: developer.android.com/reference/android/content/ ...
Blundell

@Blundell: jeśli więc nadejdzie niejawna intencja, zostanie wywołane działanie z domyślną kategorią w filtrze intencji?
Pravy

1
Wierzę, że jest on wykorzystywany do zrozumienia jest to aktywność w użyciu tak „to jest do stosowania w filtrach celu określonym w pakietach”
Blundell

jeśli więcej niż jedno działanie zawiera domyślną jako kategorię, w odpowiednich filtrach intencji, które działanie zostanie wywołane?
Pravy

Jeśli mają różne filtry intencji, będzie to zależeć od zamiaru.
Blundell

Odpowiedzi:


112

Kategorie są używane dla niejawnych intencji. Tak więc, jeśli Twoja aktywność może zostać uruchomiona przez niejawną intencję, gdy żadna inna kategoria nie jest przypisana do działania, filtr zamiaru działania powinien uwzględniać tę kategorię. (nawet jeśli masz inne kategorie w filtrze Zamiar). Jeśli masz pewność, że Twoja aktywność musi zostać wywołana z inną kategorią, nie używaj opcji Domyślna.

Ustawienie kategorii jako domyślnej nie oznacza, że ​​ta aktywność będzie używana domyślnie po uruchomieniu aplikacji. Zadanie po prostu mówi do systemu, że „ Och, mógłbym zacząć, nawet jeśli początkowa kategoria intencji jest ustawiona na Nic !


27
To było właściwie zrozumiałe wyjaśnienie. Porównaj tę odpowiedź z dokumentami: „Ustaw, czy działanie powinno być opcją domyślnej akcji (naciśnięcie środkowe) do wykonania na fragmencie danych. Ustawienie tej opcji spowoduje ukrycie przed użytkownikiem wszelkich działań bez ustawienia podczas wykonywania akcji na niektórych dane „Jak trudno jest napisać zrozumiały opis…
Andreas

Nie jestem jednak pewien co do jego mandatu, ponieważ wydaje się być opcjonalny, ponieważ działanie bez żadnego filtru intencji można nadal nazwać działaniem niejawnym
humblerookie

6
Dokumentacja jest teraz bardziej przejrzysta IMO: system Android automatycznie stosuje kategorię CATEGORY_DEFAULT do wszystkich niejawnych zamiarów przekazanych do startActivity () i startActivityForResult (). Jeśli więc chcesz, aby Twoja aktywność otrzymywała niejawne intencje, w filtrach intencji musi zawierać kategorię „android.intent.category.DEFAULT”.
shkschneider

2
@humblerookie. Próbowałem i nie działa bez kategorii DEFAULT. Jeśli mi nie wierzysz, sprawdź sam.
Bob Ueland

2
Gdyby tylko wszystkie tutoriale zostały napisane w ten sposób. Dlaczego nadal używamy języka drewna w 2018 roku?
SudoPlz

24

Ta kategoria jest używana głównie do ukrytych zamiarów. Jeśli twoja aktywność chce być rozpoczęta z niejawnej intencji, powinna uwzględnić tę kategorię w swoim filtrze.

Myślę, że termin „domyślny” należy rozumieć jako „domyślny kandydat ”. Jeśli akcja na fragmencie danych prowadzi do wielu działań, system Android przedstawi użytkownikowi wszystkich kandydatów, a użytkownik będzie mógł wybrać preferowaną wartość domyślną.

Odniesienie:

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

Wyciąg z tej strony:

Android traktuje wszystkie niejawne intencje przekazane do tostartActivity () tak, jakby zawierały przynajmniej jedną kategorię: „android.intent.category.DEFAULT” (stała CATEGORY_DEFAULT). Dlatego działania, które chcą otrzymać ukryte intencje, muszą zawierać „android.intent.category.DEFAULT” w swoich filtrach intencji. (Filtry z ustawieniami „android.intent.action.MAIN” i „android.intent.category.LAUNCHER” są wyjątkiem. Oznaczają działania, które rozpoczynają nowe zadania i są reprezentowane na ekranie programu uruchamiającego. Mogą obejmować „android.intent .category.DEFAULT ”na liście kategorii, ale nie trzeba).


@Comptrol, poniżej nie ma już Twojej odpowiedzi. Rośnie. :-)
Ellen Spertus

Tak, ale przywróciłem go do stanu, w jakim był. Więc ogólnie nie zmieniłem niczego.
Özgür

1
Uważam, że ta odpowiedź jest bardziej pomocna w przypadku moich obecnych filtrów zamiaru rozumienia sytuacji. Dziękuję Ci.
Neon Warge

1

Ma to na celu upewnienie się, że inne czynności mogą być wywoływane, gdy aplikacja jest uruchomiona. LAUNCHER sprawi, że działanie, które go ma, będzie pierwszym działaniem, które się rozpocznie. Aby użyć zamiarów, aby dostać się do innych działań, muszą one zostać wymienione jako „rzeczywiste” działania, wstawiając DEFAULT. To jest z tego, co wiem, więc nie cytuj mnie, jeśli jest źle.


3
Powinieneś starać się zapewnić referencje dla swoich roszczeń. „Nie cytuj mnie, jeśli jest źle” nie pozwala na zmianę tej reguły.
verybadalloc

Odniesienie, które mam, to projekt, nad którym pracowałem, studiując kodowanie Androida. Jeśli chcesz pliki źródłowe, z przyjemnością je wyślę.
CHT

1

Działania będą musiały obsługiwać CATEGORY_DEFAULT, aby można je było znaleźć przez Context.startActivity ().

Aby otrzymywać niejawne zamiary, w filtrze intencji należy uwzględnić kategorię CATEGORY_DEFAULT. Metody startActivity () i startActivityForResult () traktują wszystkie intencje tak, jakby zadeklarowały kategorię CATEGORY_DEFAULT. Jeśli nie zadeklarujemy tego w naszym filtrze intencji, żadne niejawne zamiary nie przełożą się na naszą aktywność.


0

Służy do zadeklarowania jakiejś operacji jako akcji domyślnej (jak sugeruje jej nazwa). Rozważmy, że mamy aplikację Notatnik (odnosząc się do próbki Notatnika na Androida). Pierwsza strona aplikacji zawiera listę wszystkich plików notatnika. Po wybraniu jednego pliku notatnika można wykonać jedną z operacji, takich jak edycja notatki, usunięcie notatki itp. Ale chcę, aby edycja była moją domyślną akcją, co oznacza, że ​​kiedy naciskam środkowy przycisk mojej klawiatury, okno edycji powinno być otwarte.


1
Jeśli spojrzysz na przykład Android Notepad, wszystkie działania są oznaczone jako domyślne: developer.android.com/reference/android/content/Intent.html
Peter Ajtai

0

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

Aby otrzymywać niejawne zamiary, w filtrze intencji należy uwzględnić kategorię CATEGORY_DEFAULT. Metody startActivity () i startActivityForResult () traktują wszystkie intencje tak, jakby zadeklarowały kategorię CATEGORY_DEFAULT. Jeśli nie zadeklarujesz tej kategorii w filtrze intencji, żadne niejawne zamiary nie będą miały wpływu na twoje działanie.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.