2013-05-18 16 views
14

Może ktoś wyjaśnić następujące wiersze w manifeście -Android Manifest- zamiarem filtr i aktywność

<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>  

Jak są pola aktywności i filtrem zamiarem ważne i gdy są one stosowane/mowa? Przepraszam, próbowałem przeczytać dokumentację, ale nadal nie mogłem się domyślić.

Dziękuję

+0

Dla 'kategorii default' masz ten [Odpowiedź] [1]. [1]: http://stackoverflow.com/questions/5727828/what-is-the-purpose-of-android-intent-category-default –

+0

sprawdzić dokumentację http://developer.android .com/guide/topics/manifest/manifest-intro.html – Raghunandan

Odpowiedz

19
android:name=".AboutUs" 

Jest to nazwa klasy aktywny, kropka na froncie jest skrótowym zapisem dla twojej paczki. Więc to faktycznie oznacza com.your.package.name.AboutUs co oznacza plik java, który reprezentuje działalność ta jest nazywana AboutUs.java

android:label="@string/app_name" 

etykieta jest ciąg znaków, który zostanie pokazany w programie uruchamiającym (jeżeli działalność jest wymieniona w wyrzutni) i na górze okno, w którym czynność jest otwarta.

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

intent filter definiuje intencje, które Twoja aktywność "wysłuchuje" w celu uruchomienia.

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

Akcja i kategoria to oba pola, które są ustawiane w zamierzeniu, zanim zostaną "wypalone" w systemie. System będzie wówczas szukał działań pasujących zarówno do akcji, jak i kategorii, a jeśli ją znajdzie, uruchomi tę aktywność, lub jeśli znajdzie wiele, pokaże użytkownikowi wszystkie i pozwoli im wybrać.

W przypadku Twojej akcji com.example.app1.ABOUT jest niestandardowym działaniem, które jest specyficzne dla Twojej aplikacji, a nie jednej z akcji systemu.

Więc tutaj jest czym jest intencja, która rozpocząć tę szczególną aktywność może wyglądać następująco:

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

Zauważ, że ponieważ stworzyliśmy akcję niestandardową, to intencją nie wymaga dostępu do Twojego AboutUs.class więc to zamiarem może być technicznie wyrzucony z dowolnej aplikacji na urządzeniu i uruchomi się w twojej działalności.

+0

Świetna odpowiedź! Dokładnie to, czego potrzebowałem. Mam jednak wątpliwości. Zwykle zaczynam działalność w następujący sposób - 'Intent i = new Intent (" com.example.app1.ABOUT ");' 'startActivity (i);' To działa dobrze, więc oznacza to, że można pominąć część setCategory? Wielkie dzięki! –

+1

Tak, to działa dobrze, i tak można pominąć kategorię, ponieważ używasz 'DEFAULT' – FoamyGuy

1

Dla ACTION masz ten answer i do kategorii default masz ten answer

+0

Dzięki @Gabriel –

1

Aktywność to komponent aplikacji zapewniający ekran, za pomocą którego użytkownicy mogą wchodzić w interakcje, aby coś zrobić, na przykład wybrać numer telefonu, zrobić zdjęcie, wysłać wiadomość e-mail lub wyświetlić mapę. Aby zadeklarować swoją aktywność, otwórz plik manifestu i dodaj element jako element potomny takiego elementu, jak na przykład.

  • Atrybut android: nazwa jest jedynym wymaganym atrybutem - określa nazwę klasy działania.
  • Android: atrybut label jest etykietą czytelny dla użytkownika dla aplikacji jako całości, a domyślne etykiety dla każdego z komponentów aplikacji

Element może również określić różne intent filtry wykorzystujące ten element- w celu zadeklarowania, w jaki sposób inne składniki aplikacji mogą go aktywować.

  • Element określa, że ​​jest to "główny" punkt wejścia do aplikacji.
  • Element ten określa, że ​​to działanie powinno znajdować się w programie uruchamiającym system (aby umożliwić użytkownikom uruchamianie tego działania).

Proszę odnieść się do http://developer.android.com/guide/components/activities.html

+0

Thanks @rookiejava –