- sintaks:
-
<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>
- terdapat dalam:
-
<application>
- bisa berisi:
<meta-data>
<grant-uri-permission>
<path-permission>
- deskripsi:
-
Mendeklarasikan komponen penyedia konten. Penyedia konten adalah subclass
ContentProvider
yang menyediakan akses terstruktur ke data yang dikelola aplikasi. Semua penyedia konten dalam aplikasi Anda harus ditentukan di elemen<provider>
dalam file manifes; atau, sistem tidak akan mengetahuinya dan tidak akan menjalankannya.Anda hanya mendeklarasikan penyedia konten yang merupakan bagian dari aplikasi Anda. Penyedia konten dalam aplikasi lain yang Anda gunakan dalam aplikasi Anda tidak boleh dideklarasikan.
Sistem Android menyimpan referensi ke penyedia konten sesuai dengan string otoritas, yang merupakan bagian dari URI konten penyedia. Misalnya, Anda ingin mengakses penyedia konten yang menyimpan informasi tentang para profesional di bidang perawatan kesehatan. Untuk melakukannya, panggil metode
ContentResolver.query()
, yang di antara argumen lainnya menggunakan URI yang mengidentifikasi penyedia:content://com.example.project.healthcareprovider/nurses/rn
content:
skema mengidentifikasi URI sebagai URI konten yang mengarah ke penyedia konten Android. Otoritascom.example.project.healthcareprovider
mengidentifikasi penyedia itu sendiri; sistem Android mencari otoritas tersebut dalam daftar penyedia yang diketahui dan otoritasnya. Substringnurses/rn
adalah jalur, yang dapat digunakan oleh penyedia konten untuk mengidentifikasi subset data penyedia.Perhatikan bahwa saat menentukan penyedia Anda di elemen
<provider>
, jangan sertakan skema atau jalur di argumenandroid:name
selain otoritas.Untuk informasi cara menggunakan dan mengembangkan penyedia konten, lihat Panduan API, Penyedia Konten.
- atribut:
-
android:authorities
-
Suatu daftar dari satu atau beberapa otoritas URI yang mengidentifikasi data yang ditawarkan oleh penyedia konten.
Beberapa otoritas dicantumkan dengan memisahkan namanya menggunakan titik koma.
Untuk menghindari konflik, nama otoritas harus menggunakan konvensi penamaan gaya Java (seperti
com.example.provider.cartoonprovider
). Biasanya, ini adalah nama subclassContentProvider
yang mengimplementasikan penyedia tersebut.Tidak ada default. Setidaknya satu otoritas harus ditentukan.
android:enabled
- Apakah penyedia konten bisa digunakan oleh sistem atau tidak — "
true
" jika bisa, dan "false
" jika tidak bisa. Nilai defaultnya adalah "true
".Elemen
<application>
memiliki atributenabled
tersendiri yang berlaku untuk semua komponen aplikasi, termasuk penyedia konten.<application>
dan atribut<provider>
harus bernilai "true
" (seperti defaultnya) untuk diaktifkan penyedia konten. Jika salah satunya bernilai "false
", penyedia tersebut akan dinonaktifkan; membuatnya tidak dapat digunakan. android:directBootAware
Apakah penyedia konten tersebut mengetahui direct boot atau tidak; yaitu, apakah dapat dijalankan sebelum pengguna membuka kunci perangkat atau tidak.
Catatan: Selama Direct Boot, penyedia konten dalam aplikasi Anda hanya dapat mengakses data yang disimpan di penyimpanan perangkat yang dilindungi.
Nilai defaultnya adalah
"false"
.android:exported
- Apakah penyedia konten tersedia untuk aplikasi lain yang akan digunakan:
-
true
: Penyedia tersebut akan tersedia untuk aplikasi lain. Semua aplikasi dapat menggunakan URI konten penyedia untuk mengaksesnya, sesuai dengan izin yang ditentukan untuk penyedia itu. -
false
: Penyedia tersebut tidak akan tersedia untuk aplikasi lain. Tetapkanandroid:exported="false"
untuk membatasi akses ke penyedia ke aplikasi Anda. Hanya aplikasi yang memiliki ID pengguna (UID) yang sama sebagai penyedia, atau aplikasi yang telah diberi akses sementara ke penyedia melalui elemenandroid:grantUriPermissions
, yang dapat mengaksesnya.
Karena atribut ini diperkenalkan di API level 17, semua perangkat yang menjalankan API level 16 dan lebih lama akan berperilaku seolah-olah atribut ini ditetapkan ke
"true"
. Jika Anda menetapkanandroid:targetSdkVersion
pada API level 17 atau yang lebih baru, maka nilai defaultnya adalah"false"
untuk perangkat yang menjalankan API level 17 dan yang lebih baru.Anda dapat menetapkan
android:exported="false"
dan masih bisa membatasi akses ke penyedia Anda dengan menyetel izin menggunakan atributpermission
. -
android:grantUriPermissions
- Apakah yang biasanya tidak memiliki izin untuk mengakses data penyedia konten dapat diberikan izin untuk melakukannya, untuk mengatasi sementara pembatasan yang diberlakukan oleh atribut
readPermission
,writePermission
,permission
, sertaexported
— "true
" jika izin dapat diberikan, dan "false
" jika tidak. Jika "true
", izin dapat diberikan ke data penyedia konten mana pun. Jika "false
", izin hanya dapat diberikan ke subset data yang tercantum di sub-elemen<grant-uri-permission>
, jika ada. Nilai defaultnya adalah "false
".Memberikan izin adalah cara untuk memberikan komponen aplikasi akses satu kali ke data yang dilindungi oleh suatu izin. Misalnya, jika pesan email berisi lampiran, aplikasi email mungkin memanggil penampil yang sesuai untuk membukanya, meskipun penampil tersebut sama sekali tidak memiliki izin umum untuk melihat data penyedia konten.
Dalam kasus tersebut, izin diberikan dengan flag
FLAG_GRANT_READ_URI_PERMISSION
dan
FLAG_GRANT_WRITE_URI_PERMISSION
di objek Intent yang mengaktifkan komponen tersebut. Misalnya, aplikasi email mungkin memasukkan
FLAG_GRANT_READ_URI_PERMISSION
di intent yang diteruskan keContext.startActivity()
. Izin tersebut khusus untuk URI di Intent.Jika Anda mengaktifkan fitur ini, baik dengan menyetel atribut ini ke "
true
" atau dengan menentukan sub-elemen<grant-uri-permission>
, Anda harus memanggilContext.revokeUriPermission()
saat URI yang tertutup dihapus dari penyedia.
Lihat juga elemen
<grant-uri-permission>
. android:icon
- Ikon yang merepresentasikan penyedia konten.
Atribut ini harus disetel sebagai referensi ke resource yang dapat digambar dan berisi definisi gambar. Jika tidak ditetapkan, ikon yang ditentukan untuk aplikasi secara keseluruhan akan digunakan sebagai gantinya (lihat atribut
icon
elemen<application>
). android:initOrder
- Urutan yang harus dibuat penyedia konten sesuai dengan penyedia konten lain yang dihosting oleh proses yang sama. Jika ada dependensi di antara penyedia konten, menetapkan atribut ini untuk masing-masing akan memastikan bahwa penyedia konten tersebut dibuat dalam urutan yang diwajibkan oleh dependensi tersebut. Nilainya adalah bilangan bulat sederhana, dengan angka yang lebih tinggi yang akan diinisialisasi terlebih dahulu.
android:label
- Label yang dapat dibaca pengguna untuk konten yang disediakan.
Jika atribut ini tidak ditetapkan, label yang ditetapkan untuk aplikasi secara keseluruhan akan digunakan (lihat atribut
label
elemen<application>
).Label tersebut harus ditetapkan sebagai referensi ke resource string, sehingga dapat dilokalkan seperti string lain pada antarmuka pengguna. Namun, untuk mempermudah saat Anda mengembangkan aplikasi, atribut tersebut juga dapat ditetapkan sebagai string raw.
android:multiprocess
- Jika aplikasi berjalan dalam beberapa proses, atribut ini menentukan apakah beberapa instance penyedia konten telah dibuat. Jika
true
, setiap proses aplikasi memiliki objek penyedia kontennya sendiri. Jikafalse
, proses aplikasi hanya berbagi satu objek penyedia konten. Nilai defaultnya adalahfalse
.Menetapkan flag ini ke
true
dapat meningkatkan performa dengan mengurangi overhead komunikasi antarproses, tetapi juga akan meningkatkan footprint memori setiap proses. android:name
- Nama class yang mengimplementasikan penyedia konten, yang merupakan subclass
ContentProvider
. Atribut ini harus berupa nama class yang sepenuhnya memenuhi syarat (seperti, "com.example.project.TransportationProvider
"). Namun, sebagai cara pintas, jika karakter pertama nama adalah titik, nama tersebut akan ditambahkan ke nama paket yang ditentukan dalam elemen<manifest>
.Tidak ada default. Nama harus ditentukan.
android:permission
- Nama izin yang harus dimiliki klien untuk membaca atau menulis data penyedia konten. Atribut ini adalah cara yang mudah dalam menetapkan satu izin untuk membaca dan menulis. Namun, atribut
readPermission
,writePermission
, dangrantUriPermissions
lebih diprioritaskan daripada atribut ini. Jika atributreadPermission
juga ditetapkan, atribut tersebut akan mengontrol akses untuk mengkueri penyedia konten. Dan jika atributwritePermission
ditetapkan, atribut tersebut akan mengontrol akses untuk mengubah data penyedia.Untuk informasi selengkapnya tentang izin, lihat bagian Izin pada pendahuluan dan dokumen terpisah, Keamanan dan Izin.
android:process
- Nama proses yang harus dijalankan oleh penyedia konten. Biasanya, semua komponen aplikasi berjalan pada proses default yang dibuat untuk aplikasi tersebut. Komponen tersebut memiliki nama yang sama dengan paket aplikasi. Atribut
process
elemen<application>
dapat menetapkan nilai default yang berbeda untuk semua komponen. Namun, setiap komponen dapat mengganti nilai default dengan atributprocess
-nya sendiri, sehingga Anda dapat menyebarluaskan aplikasi ke beberapa proses.Jika nama yang ditetapkan untuk atribut ini diawali dengan titik dua (':'), proses baru, yang bersifat pribadi untuk aplikasi, akan dibuat saat diperlukan dan aktivitas akan berjalan dalam proses tersebut. Jika nama proses dimulai dengan karakter huruf kecil, aktivitas akan berjalan pada proses global dari nama tersebut, jika memiliki izin untuk melakukannya. Hal ini memungkinkan komponen dalam aplikasi yang berbeda untuk berbagi proses, sehingga mengurangi penggunaan resource.
android:readPermission
Suatu izin yang harus dimiliki klien untuk mengkueri penyedia konten.
Jika penyedia menetapkan
android:grantUriPermissions
ketrue
, atau jika klien tertentu memenuhi ketentuan sub-elemen<grant-uri-permission>
, klien tersebut dapat memperoleh akses baca sementara ke data penyedia.Lihat juga atribut
permission
danwritePermission
.android:syncable
- Apakah data yang di bawah kontrol penyedia konten disinkronkan dengan data di server atau tidak — "
true
" jika disinkronkan, dan "false
" jika tidak disinkronkan. android:writePermission
Suatu izin yang harus dimiliki klien untuk melakukan perubahan pada data yang dikontrol oleh penyedia konten.
Jika penyedia tersebut menetapkan
android:grantUriPermissions
ketrue
, atau jika klien tertentu memenuhi ketentuan sub-elemen<grant-uri-permission>
, klien tersebut dapat memperoleh akses tulis sementara untuk mengubah data penyedia konten.Lihat juga atribut
permission
danreadPermission
.
- diperkenalkan dalam:
- API Level 1
- lihat juga:
- Penyedia Konten
<provider>
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-12-27 UTC.