因为项目须要一个类似于文件管理器的功能,于是找了找网上的项目,没有太适合的,于是自己写一个,顺便总结分享一下
一 ,视频 / 音频 / 图片 / 文档
项目要求分成这四个类别.那么首先要所得就是过滤获得文件列表,其次展示出来.
// 获取文档列表
String[] columns = new String[] { FileColumns._ID, FileColumns.DATA, FileColumns.SIZE, FileColumns.DATE_MODIFIED};
Cursor cursor = null;
Uri uri = Files.getContentUri("external");
cursor=getContentResolver().query(uri,columns,buildDocSelection(),null,(FileColumns.TITLE + " asc"));
// 根据以获取的 cursor ,转换成file对象,装入到列表中.
if (cursor.moveToFirst()) {
for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) {
String filePath = cursor.getString(1);
File file = new File(filePath);
// .... 进行自己的代码逻辑
}
}
获取文件列表时,过滤条件方法
private String buildDocSelection() {
StringBuilder selection = new StringBuilder();
Iterator<String> iter = Util.sDocMimeTypesSet.iterator();
while (iter.hasNext()) {
selection.append("(" + FileColumns.MIME_TYPE + "=='" + iter.next() + "') OR ");
}
return selection.substring(0, selection.lastIndexOf(")") + 1);
}
public static HashSet<String> sDocMimeTypesSet = new HashSet<String>() {
{
add("text/plain");
add("application/pdf");
add("application/msword");
add("application/vnd.ms-excel");
}
};
获取音频/图片/视频列表
与过滤文档不同,这三种不需摇过滤条件,其他都一样
// 图片
Uri uri = MediaStore.Images.Media.getContentUri("external");
cursor = getContentResolver().query(uri, columns, null, null, (FileColumns.TITLE + " asc"));
// 视频
Uri uri = MediaStore.Video.Media.getContentUri("external");
cursor = getContentResolver().query(uri, columns, null, null, (FileColumns.TITLE + " asc"));
// 音频
Uri uri = MediaStore.Audio.Media.getContentUri("external");
cursor = getContentResolver().query(uri, columns, null, null, (FileColumns.TITLE + " asc"));
以上就是全部内容,如果有问题欢迎留言指正~