在开发《轻松编辑》5.1版的快速打开文本文件时,遇到了如何快速获取SD卡上所有文本文件的问题。查了API,发现MediaStore可以使用。MediaStore可以获取音乐、视频和图片等,在API level 大于11后还可以获取其它文件,比如文本,或者doc,pdf。
相关代码如下:
@TargetApi(11) private void refreshList(){ String[] columns = new String[] { MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns.DATA }; Uri uri = MediaStore.Files.getContentUri("external"); String selection = "(" + MediaStore.Files.FileColumns.MIME_TYPE + "=='text/plain')"; Cursor c = getContentResolver().query(uri, columns, selection, null, MediaStore.Files.FileColumns.SIZE + " DESC"); if (c == null) { return; } if (c.moveToFirst()) { int dataIndex = c.getColumnIndex(MediaStore.Files.FileColumns.DATA); int titleIndex = c.getColumnIndex(MediaStore.Files.FileColumns.TITLE); do { c.getString(titleIndex); // 获取文件名,不包含扩展名 c.getString(dataIndex); // 获取文件实际路径 } while (c.moveToNext()); // 循环获取文件 } } |
注意:MediaStore.Files这个类要到API Level 11才能使用,这就是《轻松编辑》在Android 3.0版本以下不能启用快速打开文本的原因。其实这个可以解决的,比如在android 3.0以下用手动来获取,可如果SD卡上文件很多的话,这个时间就很漫长了,所以还是不加好。