Tutorial Android untuk Pemula Bagian-4: Penyedia Konten



Tutorial Android ini membahas konsep Penyedia Konten. Ini adalah blok bangunan penting Android, memfasilitasi pertukaran data dalam sistem Android.

Dalam tutorial Android kami sebelumnya untuk pemula, kami membahas tiga blok bangunan Android pertama: Aktivitas , Maksud dan Jasa . Artikel ini adalah yang keempat dari seri Tutorial Android untuk pemula dan membahas Penyedia Konten, yang merupakan komponen sangat penting dari Sistem Android.

Penyedia Konten adalah perantara sistem Android Anda, memfasilitasi pertukaran data antara berbagai aplikasi Android. Mari kita bahas sedikit detailnya di tutorial Android ini.





Bonus Tutorial Android untuk pemula-4: Unduh Kode Penyedia Konten di sini . Anda akan menginginkan kode ini setelah Anda menyelesaikan tutorial! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Download Code ”desc =” ”type =” ”align =” ”for =” download ”]



Tutorial Android: Penyedia Konten

Penyedia Konten memfasilitasi akses ke penyimpanan atau gudang data pusat untuk memungkinkan berbagi data dan manipulasi data di berbagai aplikasi.

Berikut beberapa contoh Penyedia Konten default di API sistem Android:

Tutorial Android: Penyedia Konten Default dalam sistem Android



Penyedia konten ini memungkinkan abstraksi pengguna dari database yang mendasarinya. Umumnya, Penyedia Konten menggunakan SQLite untuk menyimpan database yang mendasarinya.

Mari kita ambil contoh yang selalu berguna dari aplikasi Facebook lama yang baik, yang telah membantu kita menyederhanakan banyak hal di Tutorial Android sebelumnya juga!

Anda semua pernah pada suatu saat dalam kehidupan jejaring sosial Anda, mengunggah foto ke timeline Facebook Anda, benar! Bagaimana Anda melakukannya?

Saat mengklik Tombol Foto di dinding, Anda masuk ke galeri foto. Dari sana Anda dapat memilih foto untuk diunggah.

Telah membaca artikel sebelumnya dari Seri Tutorial Android , Anda tahu tentang Aktivitas dan Maksud, Anda tahu bahwa inilah yang terjadi:

Dinding Facebook Anda adalah “KEGIATAN”. Saat Anda mengklik Tombol Foto, sebuah 'NIAT' dilewati, yang menyampaikan pesan dan 'PENYEDIA KONTEN' (Galeri Foto) terbuka. Foto di-upload menggunakan 'SERVICE' upload jaringan.

Tonton video langsung ini untuk mengetahui cara kerja Penyedia Konten di dalam Aplikasi Facebook Anda.

Mengapa Sistem Android membutuhkan Penyedia Konten?

Kebutuhan akan Penyedia Materi muncul karena database yang dibuat dalam satu aplikasi tidak terlihat oleh aplikasi kedua.

Sangat mudah untuk membuat dan menyimpan database dalam aplikasi yang berbeda menggunakan SQLite, namun masalahnya adalah ini, database di Android bersifat pribadi untuk aplikasi yang membuatnya . Tidak ada area penyimpanan umum di Android yang dapat diakses setiap aplikasi. Oleh karena itu, untuk aplikasi yang berbeda untuk menggunakan database, sistem Android membutuhkan antarmuka yang memungkinkan pertukaran data antar aplikasi dan antar proses. Di sinilah penyedia konten berperan.

Apakah saya benar-benar membutuhkan Penyedia Konten?

1) Anda tidak perlu mengembangkan penyedia Anda sendiri jika Anda menginginkan database pribadi untuk aplikasi tertentu (database ini tidak akan dapat diakses oleh aplikasi selain yang membuatnya).

2) Namun Anda membutuhkan Penyedia khusus untuk memberikan saran penelusuran khusus di sistem aplikasi Anda sendiri.

3) Anda juga membutuhkan Penyedia Konten untuk menyalin dan menempelkan data kompleks dari aplikasi Anda ke aplikasi lain.

Operasi apa yang didukung oleh Penyedia Konten?

Penyedia konten mendukung operasi dasar berikut:

satu) Menanyakan: Membuat kueri Penyedia Konten untuk semua objek, berdasarkan URI yang ditentukan.

2) Menghapus: Menghapus objek tertentu dari database Penyedia Materi.

3) Memperbarui: Melakukan pembaruan pada objek dalam database.

4) Memasukkan: Menyisipkan objek baru ke database.

Langkah-langkah untuk melakukan operasi di Penyedia Konten

Langkah 1: Mengakses Penyedia Konten

Objek klien ContentResolver digunakan untuk mengakses data dari Penyedia Konten. Ini berkomunikasi dengan objek penyedia, yang pada gilirannya menerima permintaan untuk mengakses data dan mengembalikan hasil yang diinginkan. Antarmuka pertukaran data yang disediakan oleh penyedia dan objek klien penyedia memungkinkan komunikasi lintas proses / aplikasi yang berbeda.

Aplikasi yang perlu mengakses database harus mendeklarasikan ini dan meminta izin dalam file manifesnya. Ini akan dibahas secara rinci dalam tutorial Android kami berikutnya.

URI Konten

URI materi adalah salah satu argumen yang digunakan untuk mengidentifikasi data di penyedia. Ini memiliki empat bagian:

satu) Skema: Skema untuk penyedia konten memiliki nilai konstan: 'konten'.

2) Wewenang: Ini adalah nama simbolis dari penyedia, dan unik untuk masing-masing penyedia. Ini adalah cara kami memilih penyedia konten yang diinginkan dari daftar yang begitu banyak.

3) Jalur: Jalan membantu membedakan data yang dibutuhkan dari database lengkap . Misalnya, Penyedia Konten Log Panggilan membedakan antara Panggilan Tak Terjawab, Panggilan Diterima, dll. Menggunakan jalur yang berbeda.

4) INDO: Ini bukan komponen wajib, dan mungkin tidak ada di URI tetapi jika ada, harus numerik. Contohnya, jika Anda ingin mengakses file musik tertentu dari Penyedia Konten Media, Anda harus menentukan ID juga .

Proses

Menggunakan otoritas penyedia, ContentResolver mengidentifikasi penyedia konten yang benar (karena otoritas itu unik untuk setiap penyedia konten). Setelah melakukan itu, komponen jalur URI digunakan untuk memilih tabel data yang benar (diminta). Jika ada ID, penyedia akan tahu data persis apa yang diminta.

bagaimana mengalokasikan array di java secara dinamis

URI terdiri dari dua jenis:

Selain itu, URI juga dapat membatasi informasi.

Langkah 2: Cara mengambil data dari Penyedia Konten

Meskipun ContentResolver memiliki akses ke tabel data sekarang, ia tidak dapat mengambil data yang diperlukan kecuali aplikasi memilikinya 'Izin akses baca' untuk penyedia tertentu itu. Izin ini ditentukan dalam file manifes setiap penyedia konten.

Semua itu aplikasi (yang ingin mengakses database ini) yang harus dilakukan adalah meminta izin ini.

Sekarang seperti yang dibahas sebelumnya dalam tutorial Android ini, empat operasi dapat dilakukan dengan menggunakan penyedia konten . Kami akan membahas satu per satu.

QUERYING

Sekarang, Anda telah mengakses penyedia, dan memiliki izin untuk mengambil data darinya. Langkah selanjutnya adalah buat kueri untuk meminta tindakan yang diperlukan dari penyedia .

Berikut adalah argumen yang digunakan saat membuat kueri:

satu) BENCI : Ini bekerja persis seperti yang dijelaskan di atas.

2) Proyeksi: Kueri harus mengembalikan satu set kolom dari seluruh tabel database . Ini dikenal sebagai proyeksi. Meneruskan nol akan mengembalikan semua kolom, yang tidak efisien.

3) Klausul Seleksi: UNTUK filter menyatakan baris mana yang akan dikembalikan , diformat sebagai klausa SQL WHERE (tidak termasuk WHERE itu sendiri). Meneruskan null akan mengembalikan semua baris untuk URI yang diberikan.

Misalnya, jika Anda memasukkan alfabet (katakanlah 'P') di kolom pencarian buku alamat Anda, maka itu akan mengembalikan semua detail kontak yang dimulai dengan 'P'. Namun, jika Anda tidak memasukkan apa pun di bilah pencarian, daftar kontak lengkap diambil (klausa pemilihan disetel ke 'null' dalam kasus seperti itu).

4) Argumen Seleksi: Anda dapat menyertakan '? S' dalam pemilihan, yang akan diganti dengan nilai dari selectionArgs, dalam urutan kemunculannya dalam pemilihan.

5) SortOrder: SQL ORDER BY klausa (tidak termasuk ORDER BY itu sendiri). Meneruskan nol akan mengambil hasil yang mungkin tidak diurutkan.

CONTOH KODE untuk Membuat Kueri:

  • Mencari nomor telepon di Kontak
Cursor cursor = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (count> 0) {String contactDetails = '' while (cursor.moveToNext ()) { String columnId = ContactsContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) String id = cursor.getString (cursorIndex) Nama string = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.DISPLAY_NAME)) int numCount = Integer.parseInt (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.Phone.CONTACT_ID + '=' = ' , String baru [] {id}, null) sementara (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Nama:' + nama + ', Nomor Telepon:' + phoneNo + ''} phoneCursor.close ()}}}

INSERSI

Misalkan Anda ingin memasukkan kontak baru ke buku alamat Anda. ContentValues digunakan untuk melakukan penyisipan ini. Kunci objek ContentValue dan kolom Penyedia Konten harus cocok untuk mencapai ini. Berikut contohnya:

CONTOH KODE UNTUK Penyisipan:

  • Operasinya adalah memasukkan entri baru dengan nama 'Rajnikant' dan nomor '9988999888'
// Operasi ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .withValue (RawContacts.ACCOUNT_NAME, null). ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue (StructuredName.DISPLAY_NAME). ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue (Phone.NUMBER, “9988999888”). , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

MEMPERBARUI

Untuk memperbarui penyedia konten, argumen berikut digunakan:

satu) BENCI: URI Penyedia Materi

2) ContentValues: Ini berisi nilai-nilai yang akan menggantikan data yang ada.

3) Klausul Seleksi: Ini dapat membantu memilih catatan tertentu untuk diperbarui

4) Argumen Seleksi: Anda dapat menyertakan '? S' dalam pemilihan, yang akan diganti dengan nilai dari selectionArgs, dalam urutan kemunculannya dalam pemilihan.

Sekali lagi, file kunci objek ContentValues ​​harus cocok dengan kolom di Penyedia Konten jika tidak, pembaruan tidak akan terjadi.

CONTOH KODE Pembaruan:

  • Memperbarui nomor telepon dengan nama 'Rajnikant'
String di mana = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = String baru [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (di mana, params) .withValue (ContactsContract.CommonDataKinds. Phone.NUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

PENGHAPUSAN

Penghapusan menggunakan argumen yang sama seperti update dengan pengecualian argumen ContentValues, yang tidak diperlukan karena tidak akan ada nilai yang diganti.

CONTOH KODE UNTUK Penghapusan:

  • Hapus Kontak yang namanya 'Rajnikant'
String di mana = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (di mana, params) .build ()) getContentResolver ( ) .applyBatch (ContactsContract.AUTHORITY, ops)

Dalam kasus operasi Sisipkan, URI harus berbasis direktori. Dalam semua kasus lainnya, URI dapat berupa berbasis ID atau berbasis direktori.

Kami harap Tutorial Android untuk pemula: Bagian 5 tidak terlalu sulit untuk dipahami! Kami akan membahas lebih lanjut tentang Penyedia Konten di Tutorial Android Selanjutnya. Nikmati mempelajari dasar-dasarnya sampai saat itu!

Apakah Anda ragu dengan tutorial Android ini? Tanya kami.

Selamat Belajar!

Sumber daya berikut digunakan dalam membuat Tutorial Android ini! Pengembang Android Resmi , Edureka.in

Anda mungkin juga menyukai posting terkait ini: