- 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ądcom.example.project.healthcareprovider
identyfikuje dostawcę. System Android wyszukuje dany urząd na liście znanych dostawców i ich urzędów. Podłańcuchnurses/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 argumencieandroid: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 podklasyContentProvider
, 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 Atrybutenabled
, 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. Ustawandroid: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średnictwemandroid: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 ustawiszandroid: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
iexported
.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
iFLAG_GRANT_WRITE_URI_PERMISSION
w obiekcieIntent
, które aktywują komponent. Na przykład parametr aplikacja pocztowa może umieścićFLAG_GRANT_READ_URI_PERMISSION
wIntent
zaliczono do:Context.startActivity()
. Uprawnienia są konkretne do identyfikatora URI wIntent
.Jeśli włączysz tę funkcję, ustaw ten atrybut na wartość
"true"
lub przez zdefiniowanie<grant-uri-permission>
podelementy, wywołanieContext.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
, AtrybutywritePermission
igrantUriPermissions
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 atrybutwritePermission
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 atrybutemprocess
, 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
iwritePermission
.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
ireadPermission
.
- wprowadzone w:
- Poziom API 1
- zobacz też:
- Dostawcy treści
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2024-08-22 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Brak potrzebnych mi informacji"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Zbyt skomplikowane / zbyt wiele czynności do wykonania"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Nieaktualne treści"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problem z tłumaczeniem"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problem z przykładami/kodem"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Inne"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Łatwo zrozumieć"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Rozwiązało to mój problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Inne"
}]
{"lastModified": "Ostatnia aktualizacja: 2024-08-22 UTC."}
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2024-08-22 UTC."]]