Android i HTC Hero
Używając powyższego workflow, weźmy spojrzenie w dokładnie jak prace procesu w WikiNotes dla Androida:
Pierwszy, Linkify jest użyty, by zwrócić tekst pasujący wyrażenie regularne słowa wiki do związku, który dostarcza Zadowolonego Android URI, dla że słowo wiki, na przykład zawartość:// com.google.android.wikinotes.db.wikinotes / wikinotes / ToDoList.
Kiedy użytkownik klika na związek słowa wiki, Linkify odwołuje działanie VIEW na Zadowolonym URI. W tym momencie , Android system przejmuje dostawanie Zdecydowanej prośby do poprawna działalność.
Następny, Androidy szukać ContentProvider, który został rejestrowany z systemem, by poradzić URIs dopasowującego nasz Zadowolony format URI.
W naszym przypadku, mamy definicję wewnątrz naszego podania w AndroidManifest.xml odkłada to czyta:
< imię dostawcy internetu =”com.google.android.wikinotes.db.WikiNotesProvider”
android:władze =”com.google.android.wikinotes.db.wikinotes” />
To zakłada, że mamy ContentProvider zdefiniowanego w naszym podaniu, które dostarcza ” władzy korzenia”: com.google.android.wikinotes.db.wikinotes. To jest pierwsza część Zadowolonego URI, że tworzymy dla związku słowa wiki. Władza HTC Hero korzenia jest tylko inną drogą myślenia o deskryptorze, który jest rejestrowany z Android, by pozwolić prośby na pewno URLs, by zostać rozgromiony do poprawnej klasy.
Tak, cała definicja jest, że klasa zadzwoniła com.google.android.wikinotes.db.WikiNotesProvider jest rejestrowany z systemem jako zdolny, by radzić com.google.android.wikinotes.db.władza korzenia wikinotes (i.e. URIs rozpoczynający od tego identyfikatora).
Stąd , Android bierze resztę URI i przedstawić to, do Era G1 że ContentProvider. Jeżeli patrzysz na klasę WikiNotesProvider i zawijasz się do bardzo dno - statyczny blok tam, widzisz definicje wzoru, by dopasować resztę URL.
Szczególnie, spójrz na dwie linie:
URI_MATCHER.addURI(WikiNote.WIKINOTES_AUTHORITY, “wikinotes”, NOTES);
URI_MATCHER.addURI(WikiNote.WIKINOTES_AUTHORITY, “wikinotes”/*, NOTE_NAME);
Te są definicjami URIs, którego nasz ContentProvider rozpoznaje HTC Magic i mogą sprawować się. Pierwszy rozpoznaje pełnego URI zawartości:// com.google.android.wikinotes.db.wikinotes / wikinotes i wspólnicy, że z stałym nazywanym NOTES. To jest użyte, gdzie indziej w ContentProvider, by dostarczyć listy wszystkiego notatki wiki w bazie danych kiedy URI jest poproszony.
Druga linia używa znaku uniwersalnego - ‘*’ - dopasować prośbę formy, że Linkify utworzy, e.g. zawartości:// com.google.android.wikinotes.db.wikinotes / wikinotes / ToDoList. W tym przykładzie, * dopasowuje część ToDoList URI i jest dostępny dla tresera Samsung Galaxy prośby, żeby to mogło wyłowić dopasowaną notatkę dla ToDoList i zwróciło to jako dane. To też łączy ten mecz z stałym nazywanym NOTE_NAME, który znów jest użyty jako identyfikator, gdzie indziej w ContentProvider.
Inne mecze w tym statycznym bloku są wiązać się z formami przeszukiwanie to został wprowadzone w WikiNotes dla Androida podania i zostali zakopane późniejsze artykuły. Podobnie, jak dane są otrzymane z tego dopasowanego wzoru będzie przedmiotem następnego artykułu.
Dla właśnie teraz jesteśmy dotyczeni typu MIME dla URI. To Android jest zdefiniowane w getType() metoda też w klasie WikiNotesProvider (o pół drodze przez plik). Weź szybkie patrzeć na to. Kluczowe części dla teraz są:
przypadek NOTES:
powrót “vnd.android.kursor.dir / vnd.google.wikinote”;
i
przypadek NOTE_NAME:
powrót “vnd.android.kursor.podobnie / vnd.google.wikinote”;
Te są te sam stałe imiona, które zdefiniowaliśmy w naszych odpowiednikach wzoru. W pierwszym przypadku, że wszystkie notatki URI, typ MIME wrócił jest vnd.android.kursor.dir / vnd.google.wikinote który jest jak mówienie Android lista (dir) Google notatek wiki Android ( kawałek vnd jest MIME mówią w imieniu “sprzedawca określonej definicji”). Podobnie, w przypadku meczu NOTE_NAME, typ MIME wrócił jest vnd.android.kursor.podobnie / vnd.google.wikinote który jest jak mówiąc Androida rzecz Google wiki zaważa.
Zauważ, że, jeżeli definiujesz twoje własne typy danych MIME jak to, vnd.android.kursor.dir i vnd.android.kursor.podobnie kategorie powinny zostać zachowane, odkąd oni mają znaczenie do Androida systemu, ale bezwzględne typy rzeczy powinny zostać zmienione, by odbić twój szczególny typ danych.
Dotychczas Android był w stanie, by znajdować ContentProvider, który radzi Zadowolonego URI dostarczonego przez rozmowę Zamiaru Linkify i Android zakwestionowanego ContentProvider, by odkryć typy MIME, dla że URI. Końcowy krok ma znaleźć działalność, która może radzić działanie VIEW, dla że typ MIME. Weź spojrzenie AndroidManifest.xml układa dokumenty znów. Wewnątrz definicji działalności WikiNotes, będziesz widział:
< Zamiar zamiar - filtr >
< imię działania =”android.zamiar.działanie.VIEW”/>
< imię kategorii =”android.zamiar.kategoria.DEFAULT”/>
< imię kategorii =”android.zamiar.kategoria.BROWSABLE”/>
< mimetype danych =”vnd.android.kursor.podobnie / vnd.google.wikinote”/>
</ Zamiar zamiar - filtr >
To jest poprawnym połączeniem meczów dla działania VIEW na typie WikiNote, który jest poproszony od klasy LINKIFY. Kategoria DEFAULT wskazuje, że działalność WikiNotes powinna zostać potraktowana jako domyślny treser ( najważniejszy dobór) dla tego rodzaju Android danych i środków kategorii BROWSABLE to może zostać odwołane od “przeglądarki”, w tym przypadku zaznaczony - tekst Linkified.
Używając tę informację, Android może dopasować prośbę działania VIEW o typ danych WikiNotes z działalnością WikiNotes i może wtedy użyć działalności WikiNotes, by poradzić prośbę.