Saya memahami bahwa ExternalFiles akan digunakan pada API 8 dan yang lebih baru dan getExternalStorageDirectory untuk 7 dan ke bawah. Namun saya agak bingung antara penggunaannya. Misalnya saya ingin memeriksa bahwa folder itu ada dan sebelumnya Anda akan menggunakan sesuatu seperti:
File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");
Namun setiap contoh yang saya lihat mengatakan untuk menggunakan getExternalFilesDir (null), File.ext. Karena saya di atas API 8, saya ingin menggunakan metode ini, tetapi bagaimana cara memeriksa folder? Saya akan memeriksa keberadaan file di titik lain tetapi untuk saat ini hanya ingin melihat apakah foldernya ada ??
getExternalStorageDirectory()
tidak tidak selalu - bahkan mungkin tidak biasanya - "path ke kartu SD Anda" kembali Sebagai gantinya, ia mengembalikan "direktori penyimpanan eksternal primer". Dokumen ( developer.android.com/reference/android/os/… ) mengatakan:Pertama-tama, kita perlu memahami tentang apa perbedaan antara Penyimpanan Internal, Penyimpanan Eksternal (alias penyimpanan eksternal primer) dan Penyimpanan Eksternal Sekunder?
Penyimpanan Internal: adalah penyimpanan yang tidak dapat diakses oleh pengguna, kecuali melalui aplikasi yang diinstal (atau dengan me-rooting perangkat mereka). Contoh: data / data / app_packageName
Penyimpanan Eksternal Utama: Dalam penyimpanan bersama bawaan yang "dapat diakses oleh pengguna dengan mencolokkan kabel USB dan memasangnya sebagai drive pada komputer host". Contoh: Saat kami mengatakan Nexus 5 32 GB.
Penyimpanan Eksternal Sekunder: Penyimpanan yang dapat dilepas. Contoh: Kartu SD.
Ini mengembalikan jalur ke folder file di dalam Android / data / data / your_package / pada penyimpanan eksternal utama. Yang merupakan penyimpanan bawaan.
Ini akan mengembalikan jalur direktori penyimpanan eksternal sekunder
sumber
File getExternalStoragePublicDirectory (String type)
danFile getFilesDir ()
juga! PEMBARUAN PENTING! untuk siapa pun yang menemukan pertanyaan ini.
Karena ini adalah pertanyaan yang agak lama hanya ingin memberikan beberapa informasi tambahan. Sejak KitKat bahkan aplikasi yang memiliki izin WRITE_EXTERNAL_STORAGE hanya diizinkan untuk menulis ke Android / data / data / your_package / pada penyimpanan eksternal, alias
getExternalFilesDir()
Jika Anda akan mencoba menulis kepada
getExternalStorageDirectory() + "/somefolder/anotherfolder/"
Anda akan mendapatkan SecurityException di sebagian besar perangkatsumber
!! PENTING !!
Environment.getExternalStorageDirectory()
tidak digunakan lagi dan Konteks # getExternalFilesDir (String), MediaStore, atau Intent # ACTION_OPEN_DOCUMENT, harus digunakan sebagai gantinya.https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory ()
Juga mulai dari Android.M pengembang perlu meminta izin pada saat menjalankan.
Lihat lebih detail dalam dokumentasi di sini dan pertanyaan ini
Environment.getExternalStorageDirectory () tidak digunakan lagi di API level 29 java
sumber