Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Membuka file menggunakan framework akses penyimpanan

Android 4.4 (API level 19) memperkenalkan Storage Access Framework (SAF). SAF memudahkan pengguna menjelajahi dan membuka dokumen, gambar, serta file lain di semua penyedia penyimpanan dokumen pilihannya. UI standar yang mudah digunakan memungkinkan pengguna secara konsisten menjelajahi file dan mengakses dokumen yang baru dibuka di semua aplikasi dan penyedia.

Layanan penyimpanan cloud atau lokal dapat dilibatkan dalam ekosistem ini dengan menerapkan DocumentsProvider yang merangkum layanannya. Aplikasi klien yang memerlukan akses ke dokumen penyedia dapat berintegrasi dengan SAF hanya dengan beberapa baris kode.

SAF mencakup:

  • Penyedia dokumen—Penyedia konten yang memungkinkan layanan penyimpanan (seperti Google Drive) menampilkan file yang dikelolanya. Penyedia dokumen diterapkan sebagai subclass dari class DocumentsProvider. Skema penyedia dokumen didasarkan pada hierarki file biasa, meskipun Anda yang menentukan bagaimana penyedia dokumen menyimpan data secara fisik. Platform Android menyertakan beberapa penyedia dokumen bawaan, seperti Download, Gambar, dan Video.
  • Aplikasi klien—Aplikasi kustom yang memanggil tindakan intent ACTION_CREATE_DOCUMENT, ACTION_OPEN_DOCUMENT, dan ACTION_OPEN_DOCUMENT_TREE, serta menerima file yang dikembalikan penyedia dokumen.
  • Alat pilih—UI sistem yang memungkinkan pengguna mengakses dokumen dari semua penyedia dokumen yang memenuhi kriteria penelusuran aplikasi klien.

Beberapa fitur yang disediakan SAF adalah:

  • Memungkinkan pengguna menjelajahi konten dari semua penyedia dokumen, bukan hanya satu aplikasi.
  • Memungkinkan aplikasi memiliki akses tetap jangka panjang ke dokumen yang dimiliki penyedia dokumen. Melalui akses ini, pengguna bisa menambah, mengedit, menyimpan, dan menghapus file pada penyedia.
  • Mendukung banyak akun pengguna dan root transien seperti penyedia penyimpanan USB, yang hanya muncul jika drive terpasang.

Ringkasan

SAF berpusat di seputar penyedia konten yang merupakan subclass dari class DocumentsProvider. Dalam penyedia dokumen, data disusun secara terstruktur sebagai hierarki file biasa:

model data

Gambar 1. Model data penyedia dokumen. Root menunjuk ke satu Dokumen, yang nantinya akan memulai proses fan-out seluruh pohon.

Perhatikan hal berikut:

  • Setiap penyedia dokumen melaporkan satu 'root' atau lebih, yang merupakan titik awal penjelajahan pohon dokumen. Masing-masing root memiliki COLUMN_ROOT_ID yang unik, dan itu menunjuk ke dokumen (direktori) yang mewakili konten di bawah root tersebut. Root sengaja dibuat dinamis untuk mendukung kasus penggunaan seperti banyak akun, perangkat penyimpanan USB transien, atau login/logout pengguna.
  • Di bawah setiap root terdapat satu dokumen. Dokumen itu menunjuk ke 1 hingga N dokumen, yang masing-masing pada gilirannya bisa menunjuk ke 1 hingga N dokumen.
  • Setiap backend penyimpanan memunculkan masing-masing file dan direktori dengan merujuknya melalui COLUMN_DOCUMENT_ID yang unik. ID dokumen harus unik dan tidak berubah setelah dibuat, karena ID ini digunakan untuk pemberian URI persisten pada semua tindakan mulai ulang perangkat.
  • Dokumen dapat berupa file yang bisa dibuka (dengan jenis MIME tertentu), atau direktori yang berisi dokumen tambahan (dengan jenis MIME MIME_TYPE_DIR).
  • Setiap dokumen bisa memiliki kemampuan yang berbeda, seperti yang dijelaskan COLUMN_FLAGS. Misalnya, FLAG_SUPPORTS_WRITE, FLAG_SUPPORTS_DELETE, dan FLAG_SUPPORTS_THUMBNAIL. COLUMN_DOCUMENT_ID yang sama dapat disertakan dalam beberapa direktori.

Alur kontrol

Seperti disebutkan di atas, model data penyedia dokumen didasarkan pada hierarki file biasa. Namun, Anda dapat secara fisik menyimpan data dengan cara apa pun yang diinginkan, selama Anda bisa mengaksesnya menggunakan API DocumentsProvider. Misalnya, Anda dapat menggunakan penyimpanan cloud berbasis tag untuk data Anda.

Gambar 2 menunjukkan cara aplikasi foto bisa menggunakan SAF untuk mengakses data tersimpan:

aplikasi

Gambar 2. Alur Storage Access Framework

Perhatikan hal berikut:

  • Di SAF, penyedia dan klien tidak berinteraksi secara langsung. Klien meminta izin untuk berinteraksi dengan file (yakni, membaca, mengedit, membuat, atau menghapus file).
  • Interaksi dimulai saat aplikasi (dalam contoh ini, aplikasi foto) mengaktifkan ACTION_OPEN_DOCUMENT atau ACTION_CREATE_DOCUMENT intent. Intent ini dapat mencakup filter untuk lebih menyaring kriteria, misalnya, "beri saya semua file yang bisa dibuka yang memiliki jenis MIME 'gambar'".
  • Setelah intent diaktifkan, alat pilih sistem akan mengunjungi setiap penyedia yang terdaftar dan menunjukkan root konten pencocokan kepada pengguna.
  • Alat pilih ini memberi pengguna antarmuka standar untuk mengakses dokumen, meskipun penyedia dokumen yang mendasarinya bisa sangat berbeda. Misalnya, gambar 2 menunjukkan penyedia Google Drive, penyedia USB, dan penyedia cloud.

Gambar 3 menunjukkan alat pilih saat pengguna yang menelusuri gambar telah memilih folder Download. Gambar ini juga menunjukkan semua root yang tersedia untuk aplikasi klien.

Screenshot pilihan folder di alat pilih sistem

Gambar 3. Alat pilih

Setelah pengguna memilih folder Download, gambar akan ditampilkan. Gambar 4 menunjukkan hasil proses ini. Pengguna kini dapat berinteraksi dengan gambar ini melalui cara yang didukung penyedia dan aplikasi klien.

Screenshot folder Download

Gambar 4. Gambar yang disimpan di folder Download, seperti yang terlihat di alat pilih sistem

Menulis aplikasi klien

Pada Android 4.3 dan yang lebih rendah, jika Anda ingin aplikasi mengambil file dari aplikasi lain, aplikasi tersebut harus memanggil intent seperti ACTION_PICK atau ACTION_GET_CONTENT. Pengguna nantinya harus memilih satu aplikasi untuk memilih file, dan aplikasi tersebut harus menyediakan antarmuka agar pengguna dapat menjelajahi dan memilih dari file yang tersedia.

Pada Android 4.4 (API level 19) dan yang lebih tinggi, Anda memiliki opsi tambahan untuk menggunakan intent ACTION_OPEN_DOCUMENT, yang menampilkan UI alat pilih yang dikontrol sistem yang memungkinkan pengguna menjelajahi semua file yang disediakan aplikasi lain. Dari satu UI ini, pengguna dapat memilih file dari aplikasi apa pun yang didukung.

Pada Android 5.0 (API level 21) dan yang lebih tinggi, Anda juga dapat menggunakan intent ACTION_OPEN_DOCUMENT_TREE, yang memungkinkan pengguna memilih direktori untuk diakses aplikasi klien.

Catatan: ACTION_OPEN_DOCUMENT tidak dimaksudkan untuk menggantikan ACTION_GET_CONTENT. Mana yang harus digunakan bergantung pada kebutuhan aplikasi:

  • Gunakan ACTION_GET_CONTENT jika Anda ingin aplikasi hanya membaca atau mengimpor data. Dengan pendekatan ini, aplikasi akan mengimpor salinan data, seperti file gambar.
  • Gunakan ACTION_OPEN_DOCUMENT jika Anda ingin aplikasi memiliki akses tetap jangka panjang ke dokumen yang dimiliki penyedia dokumen. Contohnya adalah aplikasi pengeditan foto yang memungkinkan pengguna mengedit gambar yang disimpan dalam penyedia dokumen.

Untuk informasi selengkapnya tentang cara mendukung penjelajahan file dan direktori menggunakan UI alat pilih sistem, lihat panduan cara mengakses dokumen dan file lainnya.

Referensi lainnya

Untuk informasi selengkapnya tentang penyedia dokumen, manfaatkan referensi berikut:

Contoh

Video