Inilah kode saya sejauh ini:
String path = Environment.getExternalStorageDirectory().toString()+"/Pictures";
AssetManager mgr = getAssets();
try {
String list[] = mgr.list(path);
Log.e("FILES", String.valueOf(list.length));
if (list != null)
for (int i=0; i<list.length; ++i)
{
Log.e("FILE:", path +"/"+ list[i]);
}
} catch (IOException e) {
Log.v("List error:", "can't list" + path);
}
Namun sementara saya memiliki file di direktori itu, itu mengembalikan saya list.length = 0 ... ada ide?
can't play video error
. Anda harus pergi ke ponsel Andasettings --> apps --> your app --> permissions --> enable storage.
Harus melakukan ini secara manual jika Anda menghadapi kesalahan ini. Pastikan Anda memiliki<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
dalam manifest Anda. Untuk orang-orang yang menghadapiNullPointerException
- Anda mencoba mengakses file di penyimpanan internal aplikasi yang bersifat pribadi, maaf Anda tidak dapat melakukan itu.Saya baru saja menemukan bahwa:
new File("/sdcard/").listFiles()
mengembalikan nol jika Anda tidak memiliki:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
setel di file AndroidManifest.xml Anda.
sumber
Nah,
AssetManager
daftar file di dalamassets
folder yang ada di dalam file APK Anda. Jadi yang coba Anda cantumkan dalam contoh di atas adalah [apk] / assets / sdcard / Pictures.Jika Anda meletakkan beberapa gambar di dalam
assets
folder di dalam aplikasi Anda, dan mereka ada diPictures
direktori, Anda akan melakukannyamgr.list("/Pictures/")
.Di sisi lain, jika Anda memiliki file di sdcard yang berada di luar file APK Anda, di dalam
Pictures
folder, maka Anda akan menggunakanFile
sebagai berikut:Dan tautan yang relevan dari dokumen:
File
Asset Manager
sumber
Selain semua jawaban di atas:
Jika Anda menggunakan Android 6.0+ (API Level 23+), Anda harus secara eksplisit meminta izin untuk mengakses penyimpanan eksternal. Cukup memiliki
dalam manifestasi Anda tidak akan cukup. Anda juga secara aktif meminta izin dalam aktivitas Anda:
Saya sarankan membaca ini: http://developer.android.com/training/permissions/requesting.html#perm-request
sumber
Anda
path
tidak berada dalam folder aset. Entah Anda menghitung file dalam folder aset denganAssetManager.list()
atau Anda menghitung file pada kartu SD Anda denganFile.list()
sumber
atau
sumber
Coba ini:
sumber
Ada dua hal yang mungkin terjadi:
READ_EXTERNAL_STORAGE
izin ke AndaAndroidManifest.xml
sumber
Coba ini
sumber
Jika Anda menggunakan Android 10 / Q dan Anda melakukan semua hal yang benar untuk meminta izin akses untuk membaca penyimpanan eksternal dan masih tidak berfungsi, ada baiknya membaca jawaban ini:
Android Q (10) meminta izin untuk mendapatkan akses semua penyimpanan. Penyimpanan tercakup
Saya memiliki kode yang berfungsi, tetapi perangkat saya mengambilnya sendiri untuk memperbarui ketika berada di koneksi jaringan (biasanya tanpa koneksi.) Setelah di Android 10, akses file tidak lagi berfungsi. Satu-satunya cara mudah untuk memperbaikinya tanpa menulis ulang kode adalah dengan menambahkan atribut ekstra tersebut ke manifes seperti yang dijelaskan. Akses file sekarang berfungsi seperti di Android 9 lagi. YMMV, ini mungkin tidak akan terus berfungsi di versi mendatang.
sumber