Tutorial Android untuk Pemula Bahagian-4: Penyedia Kandungan



Tutorial Android ini membincangkan konsep Penyedia Kandungan. Ini adalah blok bangunan penting Android, yang memudahkan pertukaran data dalam sistem Android.

Dalam tutorial Android sebelumnya untuk pemula, kami membincangkan tiga blok bangunan pertama Android: Aktiviti , Niat dan Perkhidmatan . Artikel ini keempat dalam siri Tutorial Android ini untuk pemula dan membincangkan Penyedia Kandungan, yang merupakan komponen lain yang sangat penting dalam Sistem Android.

Content Provider adalah orang tengah sistem Android anda, yang memudahkan pertukaran data antara aplikasi Android yang berbeza. Mari kita ketahui sedikit perinciannya dalam tutorial Android ini.





Tutorial Android untuk pemula-4 Bonus: Muat turun Kod Penyedia Kandungan di sini . Anda mahukan kod ini setelah anda mengikuti tutorial! :)

[dl url = '#' class = 'eModal eModal-6 ″ title =' Download Code 'desc =' 'type =' 'align =' 'for =' muat turun ']



Tutorial Android: Penyedia Kandungan

Penyedia Kandungan memudahkan akses ke gudang data pusat atau gudang untuk membolehkan perkongsian data dan manipulasi data di pelbagai aplikasi.

Berikut adalah beberapa contoh Penyedia Kandungan lalai dalam API sistem Android:

Tutorial Android: Penyedia Kandungan Lalai dalam sistem Android



Penyedia kandungan ini membolehkan pengguna mengambil dari pangkalan data yang mendasari. Secara amnya, Penyedia Kandungan menggunakan SQLite untuk menyimpan pangkalan data yang mendasarinya.

Mari kita ambil contoh aplikasi Facebook lama yang selalu bermanfaat, yang telah membantu kita mempermudah perkara dalam Tutorial Android sebelumnya juga!

Anda semua mempunyai tahap kehidupan sosial anda, memuat naik gambar ke garis masa Facebook anda, betul! Bagaimana anda melakukannya?

Apabila mengklik Butang Foto di dinding, anda akan sampai ke galeri foto. Dari sana anda boleh memilih foto untuk dimuat naik.

Setelah membaca artikel sebelumnya dari Siri Tutorial Android , anda tahu tentang Aktiviti dan Niat, anda tahu bahawa inilah yang berlaku:

Dinding Facebook anda adalah 'AKTIVITI'. Semasa anda mengklik pada Butang Foto, 'INTENT' dilalui, yang menyampaikan mesej dan 'PENYEDIA KANDUNGAN' (Galeri Foto) terbuka. Foto tersebut diunggah menggunakan rangkaian 'LAYANAN'.

Tonton video langsung ini untuk mengetahui bagaimana Penyedia Kandungan berfungsi di dalam Aplikasi Facebook anda.

Mengapa Sistem Android memerlukan Penyedia Kandungan?

Keperluan untuk Penyedia Kandungan timbul kerana pangkalan data yang dibuat dalam satu aplikasi tidak dapat dilihat oleh aplikasi kedua.

Sangat mudah untuk membuat dan menyimpan pangkalan data dalam aplikasi yang berbeza menggunakan SQLite, namun masalahnya adalah ini, pangkalan data di Android adalah peribadi untuk aplikasi yang membuatnya . Tidak ada ruang penyimpanan umum di Android yang dapat diakses oleh setiap aplikasi. Oleh itu, untuk aplikasi yang berbeza untuk menggunakan pangkalan data, sistem Android memerlukan antara muka yang membolehkan pertukaran data antara aplikasi dan antara proses tersebut. Di sinilah penyedia kandungan bermain.

Adakah saya benar-benar memerlukan Penyedia Kandungan?

1) Anda tidak perlu mengembangkan penyedia anda sendiri jika anda mahukan pangkalan data peribadi untuk aplikasi tertentu (pangkalan data ini tidak dapat diakses oleh aplikasi selain dari yang membuatnya).

2) Anda bagaimanapun memerlukan penyedia Custom untuk memberikan cadangan carian tersuai dalam sistem aplikasi anda sendiri.

3) Anda juga memerlukan Penyedia Kandungan untuk menyalin dan menampal data kompleks dari aplikasi anda ke aplikasi lain.

Apakah operasi yang disokong oleh Penyedia Kandungan?

Penyedia kandungan menyokong operasi asas berikut:

satu) Pertanyaan: Pertanyaan Penyedia Kandungan untuk semua objek, berdasarkan URI yang ditentukan.

2) Padamkan: Menghapus objek yang ditentukan dari pangkalan data Penyedia Kandungan.

3) Kemas kini: Membuat kemas kini ke objek dalam pangkalan data.

4) Masukkan: Memasukkan objek baru ke pangkalan data.

Langkah-langkah menjalankan operasi di Penyedia Kandungan

Langkah 1: Mengakses Penyedia Kandungan

Objek pelanggan ContentResolver digunakan untuk mengakses data dari Penyedia Kandungan. Ini berkomunikasi dengan objek penyedia, yang pada gilirannya menerima permintaan untuk mengakses data dan mengembalikan hasil yang diinginkan. Antara muka pertukaran data yang disediakan oleh penyedia dan objek klien penyedia membolehkan komunikasi merentasi proses / aplikasi yang berbeza.

Aplikasi yang perlu mengakses pangkalan data harus menyatakan ini dan meminta izin dalam file manifesnya. Perkara ini akan dibincangkan secara terperinci dalam tutorial Android seterusnya.

URI kandungan

URI kandungan adalah salah satu argumen yang digunakan untuk mengenal pasti data dalam penyedia. Ia mempunyai empat bahagian:

satu) Skim: Skema untuk penyedia kandungan mempunyai nilai tetap: 'kandungan'.

2) Kuasa: Ini adalah nama simbolik penyedia, dan unik untuk masing-masing. Ini adalah bagaimana kami memilih penyedia kandungan yang diinginkan dari senarai begitu banyak.

3) Laluan: Jalan membantu membezakan data yang diperlukan dari pangkalan data yang lengkap . Sebagai contoh, Penyedia Kandungan Log Panggilan membezakan antara Panggilan Tidak terjawab, Panggilan Diterima dll menggunakan jalan yang berbeza.

4) ID: Ia bukan komponen wajib, dan mungkin tidak terdapat dalam URI tetapi jika ada, ia mestilah berangka. Contohnya, jika anda ingin mengakses fail muzik tertentu dari Penyedia Kandungan Media anda, anda akan menentukan ID juga .

Prosesnya

Dengan menggunakan otoriti penyedia, ContentResolver mengenal pasti penyedia kandungan yang betul (kerana autoriti adalah unik untuk setiap penyedia kandungan). Setelah melakukan itu, komponen jalan URI digunakan untuk memilih jadual data (diminta) yang betul. Sekiranya ada ID, penyedia akan mengetahui data tepat yang diminta.

URI terdiri daripada dua jenis:

Selain itu, URI juga mempunyai maklumat yang terhad.

apa yang dilakukan init di python

Langkah 2: Cara mendapatkan data dari Penyedia Kandungan

Walaupun ContentResolver memiliki akses ke tabel data sekarang, ia tidak dapat mengambil data yang diperlukan kecuali jika aplikasi tersebut memiliki 'Izin akses baca' untuk penyedia tertentu. Kebenaran ini ditentukan dalam fail manifes setiap penyedia kandungan.

Semua itu aplikasi (yang ingin mengakses pangkalan data ini) yang harus dilakukan adalah meminta kebenaran ini.

Sekarang seperti yang dibincangkan sebelumnya dalam tutorial Android ini, empat operasi dapat dijalankan menggunakan penyedia kandungan . Kami akan membahas setiap satu demi satu.

PERTANYAAN

Sekarang, anda telah mengakses penyedia, dan mempunyai kebenaran untuk mengambil data daripadanya. Langkah seterusnya adalah membina pertanyaan untuk meminta tindakan yang diperlukan dari penyedia .

Berikut adalah argumen yang digunakan semasa membuat pertanyaan:

satu) BENCI : Ia berfungsi dengan tepat seperti yang dijelaskan di atas.

2) Unjuran: Pertanyaan harus mengembalikan sekumpulan lajur dari keseluruhan jadual pangkalan data . Ini dikenali sebagai unjuran. Lulus nol akan mengembalikan semua lajur, yang tidak cekap.

3) Klausa Pemilihan: KE penapis menyatakan baris mana yang akan dikembalikan , diformat sebagai klausa SQL WHERE (tidak termasuk WHERE itu sendiri). Lulus nol akan mengembalikan semua baris untuk URI yang diberikan.

Sebagai contoh, jika anda memasukkan abjad (sebut 'P') di ruangan carian buku alamat anda, maka ia akan mengembalikan semua butiran hubungan bermula dengan 'P'. Walau bagaimanapun, jika anda tidak memasukkan apa-apa di bar carian, senarai kenalan lengkap diambil (klausa pemilihan ditetapkan ke 'null' dalam kes seperti itu).

4) Hujah Pemilihan: Anda mungkin memasukkan '? S' dalam pilihan, yang akan digantikan oleh nilai dari pemilihanArg, dalam urutan yang muncul dalam pilihan.

5) Aturan susunan: Klausa SQL ORDER BY (tidak termasuk ORDER BY itu sendiri). Lulus nol akan mengambil hasil yang mungkin tidak disusun.

CONTOH KOD untuk Pertanyaan:

  • Mencari nombor telefon dalam Kenalan
Kursor kursor = 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) String name = cursor.getString (kursor .getColumnIndex (ContactsContract.Contacts. Integp.C) (kursor.getString (kursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) jika (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, Common_Perintah, Null , String baru [] {id}, null) sementara (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Nama:' + nama + ', No Telefon:' + phoneNo + ''} phoneCursor.close ()}}}

INSERASI

Katakan kami mahu memasukkan kenalan baru ke buku alamat anda. Objek ContentValues digunakan untuk melakukan penyisipan ini. Kekunci objek ContentValue dan lajur Penyedia Kandungan mesti sepadan untuk mencapainya. Inilah contoh untuk ini:

CONTOH KOD UNTUK Sisipan:

  • Operasinya adalah untuk memasukkan entri baru dengan nama 'Rajnikant' dan nombor '9988999888'
// Operasi ArrayList ops = ArrayList baru () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .withValue (RawContact) ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_Tame_Tame_TYPE). ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE). 99.NYA. , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

KEMASKINI

Untuk mengemas kini penyedia kandungan, argumen berikut digunakan:

satu) Benci: URI Penyedia Kandungan

2) Nilai Kandungan: Ini mengandungi nilai-nilai yang akan menggantikan data yang ada.

3) Klausa Pemilihan: Ini dapat membantu memilih rekod khusus untuk dikemas kini

4) Hujah Pemilihan: Anda mungkin memasukkan '? S' dalam pilihan, yang akan digantikan oleh nilai dari pemilihanArg, dalam urutan yang muncul dalam pilihan.

Sekali lagi, kunci objek ContentValues ​​mesti sepadan dengan lajur di Penyedia Kandungan jika tidak, kemas kini tidak akan berlaku.

CONTOH KOD UNTUK Pengemaskinian:

  • Mengemas kini nombor telefon dengan nama 'Rajnikant'
Rentetan 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.CommD. Phone.NUMBER, '9876543210'). Build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

PENGHAPUSAN

Penghapusan menggunakan argumen yang sama seperti kemas kini kecuali pengecualian argumen ContentValues, yang tidak diperlukan kerana tidak akan ada nilai yang diganti.

CONTOH KOD UNTUK Penghapusan:

  • Padamkan Kenalan di mana namanya 'Rajnikant'
Rentetan di mana = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = String baru [] {'Rajnikant'} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (mana, params) .build ()) getContentResol. ) .applyBatch (Kenalan Kontrak. KEBENARAN, ops)

Sekiranya operasi Insert, URI mesti berdasarkan direktori. Dalam semua kes lain, URI boleh dibuat berdasarkan ID atau berdasarkan direktori.

Kami berharap Tutorial Android untuk pemula: Bahagian 5 tidak terlalu sukar untuk difahami! Kami akan membincangkan lebih lanjut mengenai Penyedia Kandungan dalam Tutorial Android Selanjutnya. Selamat belajar asasnya sehingga saat itu!

Adakah anda mempunyai keraguan dalam tutorial Android ini? Tanya kami.

Selamat Belajar!

Sumber berikut digunakan dalam membuat Tutorial Android ini! Pembangun Android rasmi , Edureka.in

Anda mungkin juga menyukai catatan berkaitan: