19 września 2011

Początkowy ekran aplikacji androidowej - o intent-filter

Nie tak dawno temu zastanawiałem się nad sposobem, w jaki Android wybiera główny ekran aplikacji, co wiedziałem, że jest reprezentowane przez aktywność (ang. activity) - podklasę android.app.Activity. Każda "odsłona" widoku to kolejna aktywność na stosie wyświetlanych ekranów. Chcesz coś wyświetlić użytkownikowi, stwórz odpowiednią aktywność.

Pamiętaj: Aktywność musi być zarejestrowana w pliku konfiguracyjnym aplikacji androidowej AndroidManifest.xml przez znacznik <activity> (z jedynym wymaganym elementem android:name).

Wyświetlenie widoku odbywa się przez metodę android.content.Context.startActivity(Intent intent). Aktywność (widok, ekran) jest podklasą Context.

Aplikacja androidowa może posiadać wiele ekranów (aktywności), a wybór tego jednego, początkowego odbywa się przez znacznik <intent-filter> w ramach aktywności, w pliku AndroidManifest.xml:
<activity android:name="...">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
Podczas tworzenia aplikacji w Eclipse ADT czy z linii poleceń z android, jesteśmy pytani o nazwę głównej aktywności, która staje się właśnie początkowym ekranem użytkownika przez określenie go z <intent-filter> w AndroidManifest.xml.

Teraz wszystko jasne. Nie mam więcej pytań. A Ty?

6 komentarzy:

  1. Ze swojej strony mogę polecić także inną książkę "Pro Android 2" http://www.apress.com/9781430226598 całkiem przystępnie napisana i łatwo się ją czyta.

    OdpowiedzUsuń
  2. Krzysiek, wielkie dzięki! Mam ją, więc zabieram się za nią zaraz po "Hello, Android", która "powala" swoją prostotą i przystępnością.

    Możesz zdradzić, nad czym ostatnio siedziałeś przy Androidzie? Jakieś podpowiedzi, przy jakich klasach warto przysiąść i rozpoznać, aby ułatwić sobie dalsze prace badawczo-rozwojowe?

    OdpowiedzUsuń
  3. Powiem szczerze, że jestem w połowie tej książki. Zacząłem ją chyba z 2 miesiące temu i potem przerwałem.. ale dzięki Twoim nowym wpisom przypomniałem sobie o tym i z powrotem usiadłem do niej, także to ja dzięki ;)

    Co do pytania to ciężko na nie odpowiedzieć, bo IMO bez sensu skakać po samych klasach, lepiej poczytać ogólnie o dostępnych funkcjonalnościach, które Android oferuje.

    A już najlepiej sobie znaleźć jakiś ciekawy projekcik i go rozwijać wraz z książką, wtedy dużo więcej można się nauczyć i nie czytasz dla samej wiedzy, ale także aby użyć tej wiedzy praktyce.

    OdpowiedzUsuń
  4. Ciekawostka... ekran główny ekranem głównym ale można tak zrobić intent filter że jak coś się stanie przykładowo dostaniesz sms-a ruszy twoja aplikacja od konkretnego Activity :D ale tak wiem... wybiegam daleko w przyszłość :D

    OdpowiedzUsuń
  5. @Robert WŁAŚNIE! (wybiegasz daaaaleko w przyszłość) Ciekawym, ilu z programistów androidowych korzysta z tej funkcji - możliwości wywołania dowolnego ekranu w aplikacji? Miałeś z tym do czynienia? Jaki "use case"?

    OdpowiedzUsuń
  6. Generalnie mnie to przyniosło więcej problemów niż korzyści... w wersji 2.3 weszła obsługa NFC ale moim zdaniem bardzo niedopracowana...

    Aplikacj dość prosta... pierwsze activity logowanie drugie activity czytanie taga NFC... po przeczytaniu trzecie activity gdzie robisz reszte... za kazdym razem jak czytalem tag Android tworzył activity z przeczytanymi informacjami... do drugiego activity przypisany byl intent filter... aplikacja zamiast startowac od pierwszego activity (logowanie) startowala od drugiego... po usunieciu intent filter nie startowala moja wogole (Android nawet nie raczyl zapytać jakiej chce uzyć)... uruchomienie aplikacji nie skutkowalo "przejeciem" kontroli nad modulem NFC trzeba bylo to troche "inaczej" zrobic... po czym wypuscili nowa wersje i wszystko sie pozypalo... ale za to obsluga NFC sie poprawila.

    OdpowiedzUsuń