<dostawca>

składnia:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    ...
</provider>
zawarte w:
<application>
mogą zawierać:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
description:
Deklaruje komponent dostawcy treści. Dostawca treści to podklasa ContentProvider, który zapewnia uporządkowany dostęp do danych zarządzanych przez aplikacji. Wszyscy dostawcy treści w aplikacji muszą być zdefiniowani w <provider> w pliku manifestu. W przeciwnym razie system ich nie będzie świadomy. i ich nie uruchamia.

Deklaruj tylko tych dostawców treści, którzy są częścią Twojej aplikacji. Nie deklaruj dostawców treści w innych aplikacji używanych w danej aplikacji.

System Android przechowuje odniesienia do dostawców treści zgodnie z władzami jako ciąg znaków stanowiący część identyfikatora URI treści dostawcy. Załóżmy na przykład, że chcesz uzyskać dostęp do dostawcy treści, który przechowuje informacje o pracownikach służby zdrowia. Do zrobienia wywołasz metodę ContentResolver.query(), który wykorzystuje identyfikator URI identyfikujący dostawcę, między innymi z innymi argumentami:

content://com.example.project.healthcareprovider/nurses/rn

Schemat content: wskazuje identyfikator URI jako identyfikator URI treści wskazujący na jako dostawcę treści na Androida. Urząd com.example.project.healthcareprovider identyfikuje dostawcę. System Android wyszukuje dany urząd na liście znanych dostawców i ich urzędów. Podłańcuch nurses/rn to ścieżka, której dostawca treści używa aby identyfikować podzbiory danych dostawców.

Gdy określisz dostawcę w elemencie <provider>, w argumencie android:name nie umieszczaj schematu ani ścieżki, a jedynie organu władzy.

Informacje na temat używania i rozwijania dostawców treści można znaleźć w Dostawcy treści.

atrybuty:
android:authorities
Lista co najmniej 1 urzędu URI identyfikującego dane oferowane przez dostawcę treści. Wymień kilka urzędów, rozdzielając ich nazwy średnikami. Aby uniknąć konfliktów, używaj konwencji nazewnictwa w stylu Java dla nazw urzędów. na przykład com.example.provider.cartoonprovider. Zazwyczaj jest to nazwa podklasy ContentProvider, która implementuje dostawcę

Nie ma wartości domyślnej. Musisz określić co najmniej jeden urząd.

android:enabled
Określ, czy system może utworzyć instancję dostawcy treści. Jest "true", jeśli może być, lub "false", jeśli może być. Wartość domyślna jest "true".

Element <application> ma swój własny element Atrybut enabled, który ma zastosowanie do wszystkich składników aplikacji, w tym dostawców treści. <application> i <provider> oba atrybuty muszą mieć wartość "true", ponieważ oba są są domyślnie włączone, by dostawca treści mógł zostać włączony. Jeśli jeden z "false", dostawca jest wyłączony. Nie można utworzyć jego instancji.

android:directBootAware

Określa, czy dostawca treści uwzględnia system bezpośredniego rozruchu – czyli czy może zostać uruchomiona, zanim użytkownik odblokuje urządzenie.

Uwaga: w trakcie Direct Boot, treści dostawcy w Twojej aplikacji mają dostęp wyłącznie do danych pamięć chroniona na urządzeniu.

Wartość domyślna to "false".

android:exported
Określa, czy dostawca treści jest dostępny dla innych aplikacji.
  • "true": dostawca jest dostępny dla innych aplikacji. Każda aplikacja może użyj identyfikatora URI treści dostawcy, aby uzyskać do niej dostęp zgodnie z uprawnieniami określonymi dla z usługodawcą.
  • "false": dostawca nie jest dostępny dla innych aplikacji. Ustaw android:exported="false", aby ograniczyć dostęp do dostawcy do aplikacji. tylko aplikacje, które mają ten sam identyfikator użytkownika (UID) co dostawca; tym aplikacjom, którym tymczasowo przyznano dostęp usługodawcy za pośrednictwem android:grantUriPermissions nie mają do niego dostępu.

Ten atrybut został wprowadzony w interfejsie API poziomu 17, dlatego wszystkie urządzenia korzystające z tego poziomu 16 lub niższy atrybut zachowuje się tak, jakby ten atrybut miał ustawienie "true". Jeśli ustawisz android:targetSdkVersion co najmniej 17 lub więcej, wartość domyślna to "false" w przypadku urządzeń z interfejsem API na poziomie 17 lub wyższym.

Możesz skonfigurować android:exported="false" i nadal ograniczać dostęp do przez ustawienie uprawnień za pomocą permission .

android:grantUriPermissions
Czy osoby, które zwykle nie mają uprawnień, może uzyskać dostęp do danych dostawcy treści tymczasowe pokonanie ograniczeń nałożonych przez readPermission, writePermission, permission i exported .

Wartość to "true", jeśli można przyznać uprawnienia, lub "false", jeśli nie można jej udzielić. Jeśli zasada "true", uprawnienia mogą być przyznane dowolnej treści do danych dostawcy. Jeśli zasada "false", uprawnienia można przyznać tylko do podzbiorów danych wymienionych w <grant-uri-permission> podelementów, jeśli tak jest. Wartością domyślną jest "false".

Przyznanie uprawnień to jednorazowy sposób przyznania komponentowi aplikacji do danych chronionych uprawnieniami. Jeśli na przykład e-mail wiadomość zawiera załącznik, aplikacja pocztowa może wywołać jest odpowiednia do jego otwarcia, chociaż nie musi mieć ogólnych uprawnienia do przeglądania wszystkich danych dostawcy treści.

W takich przypadkach zezwolenie udziela: FLAG_GRANT_READ_URI_PERMISSION i FLAG_GRANT_WRITE_URI_PERMISSION w obiekcie Intent, które aktywują komponent. Na przykład parametr aplikacja pocztowa może umieścić FLAG_GRANT_READ_URI_PERMISSION w Intent zaliczono do: Context.startActivity(). Uprawnienia są konkretne do identyfikatora URI w Intent.

Jeśli włączysz tę funkcję, ustaw ten atrybut na wartość "true" lub przez zdefiniowanie <grant-uri-permission> podelementy, wywołanie Context.revokeUriPermission() gdy obsługiwany identyfikator URI jest usuwany u dostawcy.

Zobacz też <grant-uri-permission> .

android:icon
Ikona dostawcy treści. Ten atrybut jest ustawiony jako odniesienie do zasobu rysowalnego zawierającego definicji obrazu. Jeśli nie jest ustawione, ikona określona dla aplikacji jako całości. Więcej informacji: <application> icon tego elementu.
android:initOrder
Kolejność tworzenia wystąpienia dostawcy treści niż innych dostawców treści hostowanych w ramach tego samego procesu. Gdy istnieją zależności między dostawcami treści, zapewnia, że są one tworzone w kolejności wymagane przez te zależności. Wartość jest liczbą całkowitą, z wyższą liczbą.
android:label
Czytelna dla użytkownika etykieta dostarczonych treści. Jeśli ten atrybut nie jest ustawiony, etykieta ustawiona dla całej aplikacji to . Więcej informacji znajdziesz w opisie elementu <application> label.

Etykieta jest zwykle ustawiana jako odniesienie do zasobu w postaci ciągu, więc i można go zlokalizować tak samo jak inne ciągi w interfejsie. Aby jednak zapewnić wygodę na etapie tworzenia aplikacji, można go też ustawić w postaci nieprzetworzonego ciągu znaków.

android:multiprocess
Jeśli aplikacja działa w wielu procesach, ten atrybut określa, czy powstaje wiele instancji dostawcy treści. Jeśli "true", każdy proces aplikacji ma własny obiekt dostawcy treści. Jeśli "false", procesy aplikacji współdzielą tylko jeden obiekt dostawcy treści. Wartością domyślną jest "false".

Ustawienie tej flagi na "true" może zwiększyć wydajność przez zmniejszenie nie tylko pracochłonność komunikacji międzyprocesowej, ale też zwiększa ilość pamięci. każdego procesu.

android:name
Nazwa klasy, która implementuje dostawcę treści, podklasa klasy ContentProvider Jest to zwykle pełna i jednoznaczna nazwę klasy, na przykład "com.example.project.TransportationProvider". W skrócie: jeśli pierwszym znakiem nazwy jest kropka, jest dołączony do nazwy pakietu określonej w tagu <manifest> element.

Nie ma wartości domyślnej. Musisz podać nazwę.

android:permission
Nazwa uprawnienia, które klient musi mieć do odczytu lub zapisu do danych dostawcy treści. Ten atrybut to wygodny sposób na do odczytu i zapisu. Jednak readPermission, Atrybuty writePermission i grantUriPermissions mają pierwszeństwo niż ta.

Jeśli readPermission jest ustawiony atrybut, więc kontroluje on dostęp do zapytań dotyczących dostawcy treści. Jeśli atrybut writePermission jest ustawiony, kontroluje dostęp do modyfikowania danych dostawcy.

Więcej informacji o uprawnieniach: Uprawnienia w omówieniu pliku manifestu aplikacji oraz Wskazówki dotyczące bezpieczeństwa

android:process
Nazwa procesu, w którym uruchamiany jest dostawca treści. Zwykle wszystkie komponenty aplikacji są uruchamiane w domyślnym procesie utworzonym dla aplikacji. Ma taką samą nazwę jak pakiet aplikacji.

Element <application> process może ustawiać inny atrybut domyślny dla wszystkich komponentów. Każdy komponent może jednak zastąpić komponent domyślny z własnym atrybutem process, który umożliwia rozpowszechnianie do zastosowania w wielu procesach.

Jeśli nazwa przypisana do tego atrybutu zaczyna się od dwukropka (:), nowy atrybut prywatny do aplikacji i powstaje wtedy, gdy jest potrzebny, aktywność w tym procesie.

Jeśli nazwa procesu zaczyna się od małej litery, aktywność jest uruchamiana w globalnym procesie dotyczącym tej nazwy, o ile ma do tego uprawnienia. Umożliwia to komponentom w różnych aplikacjach współużytkowanie procesu, co zmniejsza wykorzystanie zasobów.

android:readPermission

Uprawnienie, które klienci muszą mieć, aby wysyłać zapytania do dostawcy treści.

Jeśli dostawca ustawia android:grantUriPermissions do "true" lub jeśli dany klient spełnia warunki <grant-uri-permission> klient może uzyskać tymczasowy dostęp z możliwością odczytu do treści do danych dostawcy.

Zobacz też permission i writePermission.

android:syncable
Czy dane pod kontrolą dostawcy treści mogą być synchronizowane z danymi na serwerze. Jest "true" a jeśli tak, to "false".
android:writePermission

Uprawnienie, które wymaga od klientów wprowadzania zmian w danych kontrolowane przez dostawcę treści.

Jeśli dostawca ustawia android:grantUriPermissions do "true" lub jeśli dany klient spełnia warunki <grant-uri-permission> klient może uzyskać tymczasowe uprawnienia do zapisu w celu modyfikowania treści do danych dostawcy.

Zobacz też permission i readPermission.

wprowadzone w:
Poziom API 1
zobacz też:
Dostawcy treści