List items = new ArrayList<>();
List paths = new ArrayList<>();
File dir = Environment.getExternalStorageDirectory(); // /sdcard
File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
paths.add(f.getAbsolutePath());
items.add(f.getName() + (f.isDirectory() ? "/" : ""));
}
}
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
listView.setOnItemClickListener((parent, view, position, id) -> {
File selected = new File(paths.get(position));
if (selected.isDirectory()) {
// 遞歸列出子目錄,更新 adapter
} else {
// 打開文件
}
});
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Android 6.0+ 需動態申請權限。
DocumentFile (Storage Access Framework) 適配 Android 10+ 分區存儲。
3. 文件圖標根據 MIME 類型顯示(MimeTypeMap)。