2014-06-12 10 views
9

Jaki jest powód dla dostawców treści?Dostawca treści dla Androida ORGANY

W jaki sposób/dlaczego chcę ich używać w inny sposób niż DOZWOLIĆ, aby zadeklarować je w manifeście?

Próbowałem odrabiać zadania na ten temat i nie mogę znaleźć przyzwoitej, spójnej dyskusji na ten temat. Oto najlepiej udało mi się znaleźć (w dodatk na czterech książek na temat rozwoju Android i własne):

  1. https://stackoverflow.com/search?q=content+provider+authority
  2. Content Providers, Authority and and URI matching
  3. Get a list of available Content Providers
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html
+1

służy do identyfikacji konkretnego dostawcy. sol. treść: //nazwa autoryzacji – pskink

Odpowiedz

15

Urząd służy do interakcji w z konkretnym dostawcą treści, co oznacza, że ​​musi być unikalny. Właśnie dlatego jest good practice, aby zadeklarować ją jako nazwę domeny (w odwrotnej kolejności) oraz nazwę pakietu zawierającego dostawcę, tym sposobem jest mniej prawdopodobne, że inny programista utworzy aplikację z dostawcą treści deklarującym te same uprawnienia.

zadeklarować ją w manifeście więc aplikacja i inne aplikacje (jeśli pozwoli im) można manipulować danych przez dostawcę zawartości w postaci URI:

content://authority-name/data-in-the-provider 

to działa podobnie do domen URL http:

http://domain-name/data-in-the-site 
+0

Czy to oznacza, że ​​jeśli mam wielu dostawców w mojej aplikacji, każdy powinien być w swoim pakiecie? –

+0

Władze muszą być unikatowe dla każdego dostawcy treści. – ILovemyPoncho

+0

Proste, a zarazem mocne wyjaśnienie bez żadnego garstki kodu bla bla. – Nirmal

1

ja również poszukuje dla wyjaśnienia i dodać do odpowiedzi udzielonej przez ILovemyPoncho, uderzę tego konkretnego answer cytuję:

i czym dokładnie jest Android: autorytety pytają?

Unikalny identyfikator systemu dla operatora. Lub lepiej na całym świecie wyjątkowy. Wszyscy dostawcy są zarejestrowani w systemie i muszą być wyjątkowe lub druga aplikacja, która chce używać tej samej nazwy, nie może być zainstalowana na .

użyć tego ciągu w końcu do komunikowania się z operatorem poprzez URI jak

Uri uri = Uri.parse ("content: //" + "your.authoritiy.string")

Ujmijmy to w następujący sposób: Jest niewidoczna ręka, która ułatwia twoją prośbę do ContentProvider twojej aplikacji.

Na przykład:

Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values); 

Zasadniczo, co mówisz, żeby Android OS jest wstawić dane podane URI zawierający uprawnienia zostały zdefiniowane w XML. System operacyjny wyszuka tego konkretnego dostawcę treści i wyśle ​​do niego żądanie.Zostanie wywołana metoda na ContentProvider i musisz dopasować identyfikator URI, aby odpowiednio go obsłużyć.

Co więcej, jeśli jesteś dostawcą treści jest tak uproszczony, że inni mają podobne uprawnienia. Nie spotkałem się z tymi dwoma problemami, o których wspomniałem, ale sądzę, że nie będą one przyjemne.

Urząd jest po to, aby upewnić się, że OS rozumie, który dostawca dostarczy dane aplikacji wnioskującej i upewnić się, że jest to dostawca świadczący tę usługę.