需要直接查询系统库来获取手机上的全部文件信息,如:图片,视频,音频,pdf文件等等。
直接上代码,获取文件的方法:
@SuppressLint("Range")
public ArrayList<DataBean> getFiles(Context context) {
ArrayList<DataBean> files = new ArrayList<>();
Cursor c = null;
try {
String select = null;
Uri contentUri = null;
if (mUriType.equalsIgnoreCase("image")) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if (mUriType.equalsIgnoreCase("video")) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if (mUriType.equalsIgnoreCase("audio")) {
select = "(_data NOT LIKE '%.amr')";
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
} else if (mUriType.equalsIgnoreCase("file")) {
// 当前需求是:只支持pdf文件
select = "(_data LIKE '%.pdf')";
contentUri = MediaStore.Files.getContentUri("external");
}
ContentResolver mContentResolver = context.getContentResolver();
c = mContentResolver.query(contentUri, null, select, null, null);
if (c == null || c.getCount() == 0) {
return new ArrayList<>();
}
int columnIndexOrThrowId = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID);
int columnIndexOrThrowMimeType = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE);
int columnIndexOrThrowData = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA);
int columnIndexOrThrowSize = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE);
int col