Latar Belakang
Pada Android 4.4 (KitKat), Google telah membatasi akses ke kartu SD.
Mulai Android Lollipop (5.0), pengembang dapat menggunakan API baru yang meminta pengguna mengonfirmasi untuk mengizinkan akses ke folder tertentu, seperti yang tertulis di postingan Google-Grup ini .
Masalah
Pos tersebut mengarahkan Anda untuk mengunjungi dua situs web:
Ini terlihat seperti contoh batin (mungkin akan ditampilkan di demo API nanti), tetapi cukup sulit untuk memahami apa yang sedang terjadi.
Ini adalah dokumentasi resmi dari API baru, tetapi tidak menjelaskan cukup detail tentang cara menggunakannya.
Inilah yang diberitahukannya kepada Anda:
Jika Anda benar-benar membutuhkan akses penuh ke seluruh subpohon dokumen, mulailah dengan meluncurkan ACTION_OPEN_DOCUMENT_TREE untuk memungkinkan pengguna memilih direktori. Kemudian berikan getData () yang dihasilkan ke fromTreeUri (Context, Uri) untuk mulai bekerja dengan pohon yang dipilih pengguna.
Saat Anda menavigasi pohon instance DocumentFile, Anda selalu bisa menggunakan getUri () untuk mendapatkan Uri yang mewakili dokumen yang mendasari objek itu, untuk digunakan dengan openInputStream (Uri), dll.
Untuk menyederhanakan kode Anda pada perangkat yang menjalankan KITKAT atau yang lebih lama, Anda dapat menggunakan fromFile (File) yang meniru perilaku DocumentsProvider.
Pertanyaan-pertanyaan
Saya punya beberapa pertanyaan tentang API baru:
- Bagaimana Anda benar-benar menggunakannya?
- Menurut postingan tersebut, OS akan mengingat bahwa aplikasi tersebut diberi izin untuk mengakses file / folder. Bagaimana Anda memeriksa apakah Anda dapat mengakses file / folder? Apakah ada fungsi yang mengembalikan daftar file / folder yang dapat saya akses?
- Bagaimana Anda menangani masalah ini di Kitkat? Apakah ini bagian dari pustaka dukungan?
- Apakah ada layar pengaturan pada OS yang menunjukkan aplikasi mana yang memiliki akses ke file / folder mana?
- Apa yang terjadi jika aplikasi dipasang untuk beberapa pengguna di perangkat yang sama?
- Apakah ada dokumentasi / tutorial lain tentang API baru ini?
- Bisakah izin dicabut? Jika ya, apakah ada maksud yang dikirim ke aplikasi?
- Apakah meminta izin bekerja secara rekursif pada folder yang dipilih?
- Akankah menggunakan izin juga memungkinkan untuk memberikan kesempatan kepada pengguna untuk melakukan beberapa pilihan berdasarkan pilihan pengguna? Atau apakah aplikasi perlu secara khusus memberi tahu maksud file / folder mana yang diizinkan?
- Apakah ada cara bagi emulator untuk mencoba API baru? Maksud saya, ini memiliki partisi kartu SD, tetapi berfungsi sebagai penyimpanan eksternal utama, jadi semua akses ke sana sudah diberikan (menggunakan izin sederhana).
- Apa yang terjadi jika pengguna mengganti kartu SD dengan yang lain?