Android查看并显示sdcard目录下文件
一:程序所显示的Activity
public class FileShow extends Activity implements
android.view.View.OnClickListener{
private ListView lvFiles;
private ArrayList items;
private FileListAdapter adapter;
private File current_dir;
private TextView tvTitle;
private Button btnBack, btnHome;
private void init() {
btnBack = (Button) findViewById(R.id.back);
btnHome = (Button) findViewById(R.id.home);
btnBack.setOnClickListener(this);
btnHome.setOnClickListener(this);
tvTitle = (TextView) findViewById(R.id.tvTitle);
lvFiles = (ListView) findViewById(android.R.id.list);
//browseTo方法访问mnt下的sdcard目录,此方法返回目录中的所有子目录和文件填充到items集合
browseTo(new File("/mnt/sdcard"));
adapter = new FileListAdapter(this, items);
lvFiles.setAdapter(adapter);
}
// 浏览根目录
private void browseRoot() {
browseTo(new File("/mnt/sdcard"));
}
// 浏览上级目录
private void browseUpLevel() {
if (current_dir.getParent() != null) {
browseTo(current_dir.getParentFile());
}
}
// 浏览指定目录
private void browseTo(File dir) {
// 如果dir对象是一个目录
if (dir.isDirectory()) {
// 改变标题栏的标题
tvTitle.setText(dir.getAbsolutePath());
// 更改当前目录为指定目录
this.current_dir = dir;
// 查找dir目录中的所有子目录和文件 填充到items集合
fill(current_dir.listFiles());
}
}
private void fill(File[] files) {
// 如果items未初始化则初始化
if (items == null) {
items = new ArrayList();
}
// 清空items中所存储的原目录信息
items.clear();
Resources res = getResources();
if (files != null) {
// 遍历当前目录中的所有文件和子目录
for (File file : files) {
// 获取文件名
String fileName = file.getName();
// 获取文件或目录的图标
Drawable icon = null;
// 如果是目录,则图标为folder
if (file.isDirectory()) {
icon = res.getDrawable(R.drawable.folder);
} else {
// 如果测试为音频文件,设置图标
if (checkEnd(fileName,
res.getStringArray(R.array.audioFile))) {
icon = res.getDrawable(R.drawable.audio);
}
// 如果测试为图片文件,设置图标
else if (checkEnd(fileName,
res.getStringArray(R.array.imageFile)