11.1C: Berbagi konten dengan aplikasi lain

Daftar Isi:

Untuk melindungi aplikasi dan data pengguna, aplikasi tidak bisa berbagi data dengan aplikasi lain secara langsung. Akan tetapi, aplikasi bisa menyediakan data ke aplikasi lain dengan menggunakan penyedia konten. Aplikasi klien kemudian bisa menggunakan resolver konten untuk mengakses data melalui antarmuka publik penyedia konten.

Diagram berikut menampilkan bagaimana penjual grosir topi bisa menggunakan penyedia konten untuk berbagi informasi mengenai inventarisnya ke aplikasi yang menjual topi. Diagram yang menampilkan bagaimana aplikasi bisa menggunakan penyedia konten.

Dalam praktik ini Anda akan memodifikasi WordListSQLWithContentProvider untuk memungkinkan aplikasi lain mengakses data di penyedia kontennya. Kemudian, Anda akan membuat aplikasi kedua, WordListClient, yang tidak memiliki data sendiri, tetapi mengambil data dari penyedia konten WordListSQLWithContentProvider.

Yang harus sudah Anda KETAHUI

Untuk praktik ini, Anda harus sudah mengenal:

  • Penyedia dan resolver konten
  • Cara mengganti nama paket
  • Aplikasi WordListSQLWithContentProvider dari praktik sebelumnya

Yang akan Anda PELAJARI

Anda akan mempelajari cara:

  • Menyetel izin, sehingga aplikasi lain bisa menggunakan penyedia konten aplikasi Anda.
  • Membangun aplikasi klien yang mengambil data dari penyedia konten aplikasi Anda.

Yang akan Anda LAKUKAN

Anda akan:

  • Mengaktifkan WordListSQLWithContentProvider untuk berbagi datanya.
  • Membuat aplikasi klien yang mengambil data dari penyedia konten WordListSQLWithContentProvider.

Ringkasan Aplikasi

Anda akan menggunakan dua aplikasi di praktik ini.

  • Aplikasi WordListSQLWithContentProvider yang ada yang telah Anda buat di praktik sebelumnya.
  • Aplikasi WordListClient baru yang akan melakukan kueri pada penyedia konten WordListSQLWithContentProvider. UI untuk aplikasi ini sama dengan WordListInteractive. Layar aplikasi final.

Tugas 1. Menjadikan penyedia konten Anda tersedia untuk aplikasi lain

Secara default, aplikasi tidak bisa mengakses data aplikasi lain.

Agar penyedia konten tersedia untuk aplikasi lain, Anda harus menentukan izin di AndroidManifest di aplikasi Anda. Ini berlaku untuk aplikasi apa pun yang memiliki penyedia konten. Setiap penyedia konten memerlukan izin yang ditetapkan di AndroidManifest.

Izin tidak dicakup secara detail dalam praktik ini. Anda bisa mengetahui selengkapnya di Mengimplementasikan Izin Penyedia Konten.

1.1 Modifikasi WordListSQLWithContentProvider untuk mengizinkan akses aplikasi

  1. Buka WordListSQLWithContentProvider di Android Studio.
  2. Buka file AndroidManifest.xml.
  3. Tambahkan pernyataan ekspor di dalam <provider>.
    android:exported="true"
    
  4. Di bagian atas, di dalam tag <manifest>, tambahkan izin untuk penyedia konten.

    Anda disarankan untuk menggunakan nama paket yang unik agar izin juga tetap unik.

    <permission
    android:name="com.android.example.wordlistsqlwithcontentprovider.PERMISSION" />
    
  5. Jalankan aplikasi untuk memastikan tidak ada kesalahan dan biarkan terpasang di perangkat.

    Agar aplikasi lain bisa mengakses penyedia konten WordListWithContentProvider, aplikasi yang memiliki penyedia konten harus dipasang di perangkat. Aplikasi tidak perlu berjalan.

Anda sekarang memiliki penyedia konten di perangkat Anda yang bisa diakses oleh aplikasi lain. Selanjutnya, Anda akan membangun aplikasi yaitu WordListClient, yang mengambil kata dari penyedia konten dan menampilkannya.

1.2 Buat aplikasi WordListClient

Sebagai ganti membangun aplikasi klien dari awal, Anda akan membuat WordListClient dari salinan WordListSQLWithContentProvider. Anda akan mempertahankan antarmuka pengguna dan adaptor untuk menampilkan data. Anda akan membuang penyedia konten dan database, dan sebagai gantinya, mengambil data dari penyedia konten WordListSQLWithContentProvider.

  1. Buat salinan folder WordListSQLWithContentProvider dan beri nama WordListClient.
  2. Buka aplikasi yang disalin di folder WordListClient di Android Studio.
  3. Ubah nama paket (Refactor > Rename) menjadi wordlistclient.
  4. Buka build.gradle(Module:app) dan ubah id aplikasi menjadi wordlistclient.
  5. Di strings.xml, ubah nama aplikasi menjadi WordListClient.
  6. Di Manifes Android WordListClient, hapus deklarasi <provider> sehingga tidak ada lagi penyedia di WordListClient.
  7. Di bagian atas, di dalam izin <manifest> tag, add a <uses-permission> untuk menggunakan penyedia konten WordListSQLWithContentProvider.
    <uses-permission android:name = "com.android.example.wordlistsqlwithcontentprovider.PERMISSION"/>
    
  8. Hapus kelas WordListContentProvider karena aplikasi akan mengakses penyedia konten WordListSQLWithContentProvider.
  9. Hapus kelas WordListOpenHelper karena aplikasi Anda tidak memerlukan database atau helper yang terbuka sendiri.
  10. Perhatikan MainActivity dan WordListAdapter. Perhatikan bahwa kode untuk menyisipkan, menghapus, dan memperbarui kata tetap tidak berubah, memanggil penyedia konten WordListSQLWithContentProvider menggunakan URI yang ditetapkan di kelas Contract.
  11. Jalan WordListClient.
    • Meskipun tidak memiliki data sendiri, WordListClient menampilkan data, yang merupakan data yang diambil dari penyedia konten aplikasi WordListSQLWithContentProvider.
  12. Masukkan beberapa kata di WordListClient.
  13. Mulai WordListSQLWithContentProvider.
    • Perhatikan bahwa kata yang Anda masukkan di WordListClient juga ditampilkan di WordListSQLWithContentProvider karena keduanya berbagai satu sumber data.
    • Hapus kata di WordListSQLWithContentProvider dan perhatikan bahwa kata juga dihapus dari tampilan WordListClient. (Anda mungkin perlu menggulir agar perubahan muncul.)
  14. Saat berinteraksi dengan aplikasi lain, perubahan yang dibuat oleh satu aplikasi direfleksikan di aplikasi lain.

Pada contoh toko topi sebelumnya, pemilik gudang bisa memperbarui inventaris topi dengan topi merah atau cantik yang baru dan aplikasi toko akan langsung bisa menampilkan topi baru ini kepada pelanggannya. Dan jika toko topi merah berhasil menjual semua topi merah cantik, toko topi cantik akan mengetahui bahwa topi merah cantik telah habis terjual.

Kode solusi

Proyek Android Studio: WordListClient

Rangkuman

  • Aplikasi Anda bisa mengizinkan aplikasi lain untuk berinteraksi dengan penyedia kontennya dan mengambil atau mengedit data.
  • Anda bisa membangun aplikasi klien yang bukan menyediakan datanya sendiri, tetapi mengambil data dari penyedia konten aplikasi lain.
  • Anda bisa memisahkan pengelolaan data dari tampilan data. Yaitu, Anda bisa memiliki satu aplikasi yang mengelola penyedia konten dan beberapa aplikasi klien yang menggunakan data yang disediakan oleh penyedia konten.

Konsep terkait

Dokumentasi konsep terkait ada di Dasar-Dasar Developer Android: Konsep.

Ketahui selengkapnya

Dokumentasi Developer

results matching ""

    No results matching ""