[英]How can I get all .pdf files from Internal as well as External storage using MediaStore.Files in Android
private List<PDFFileDetails> getPdfFilesFromDevice(Context context) {
List<PDFFileDetails> listOfDirectories = new ArrayList<>();
ContentResolver cr = context.getContentResolver();
Uri uriExternal = MediaStore.Files.getContentUri("external");
Uri uriInternal = MediaStore.Files.getContentUri("internal");
String[] projection = null;
String sortOrder = null; // unordered
// only pdf
String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
String[] selectionArgsPdf = new String[]{mimeType};
Here I am getting all pdf from my internal storage and not from external sdcard First i tried without sdcard and after that I inserted sdcard but no result is coming from sdcard 在这里,我从我的内部存储器获取所有pdf,而不是从外部SD卡获取首先我尝试没有SD卡,之后我插入了SD卡,但没有结果来自SD卡
Cursor allPdfFilesCursor = cr.query(uriExternal, projection, selectionMimeType, selectionArgsPdf, sortOrder);
if (allPdfFilesCursor != null && allPdfFilesCursor.getCount() != 0) {
allPdfFilesCursor.moveToFirst();
do {
int dataColumn = allPdfFilesCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
String filePath=allPdfFilesCursor.getString(dataColumn);
} while (allPdfFilesCursor.moveToNext());
}
No result is coming from internal or external storage 内部或外部存储没有结果
allPdfFilesCursor = cr.query(uriInternal, projection, selectionMimeType, selectionArgsPdf, sortOrder);
if (allPdfFilesCursor != null && allPdfFilesCursor.getCount() != 0) {
allPdfFilesCursor.moveToFirst();
do {
int dataColumn = allPdfFilesCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
String filePath=allPdfFilesCursor.getString(dataColumn);
} while (allPdfFilesCursor.moveToNext());
}
if (allPdfFilesCursor != null && !allPdfFilesCursor.isClosed()) {
allPdfFilesCursor.close();
}
return listOfDirectories;
}
May be it is late , but i finally get the solution for as you asked for multiple file extension like .doc, pdf , xls. 可能是迟到了,但我终于得到了解决方案,因为你要求多个文件扩展名,如.doc,pdf,xls。
String pdf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
String doc = MimeTypeMap.getSingleton().getMimeTypeFromExtension("doc");
String docx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("docx");
String xls = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xls");
String xlsx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xlsx");
String ppt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("ppt");
String pptx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pptx");
String txt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("txt");
String rtx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtx");
String rtf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtf");
String html = MimeTypeMap.getSingleton().getMimeTypeFromExtension("html");
//Table
Uri table = MediaStore.Files.getContentUri("external");
//Column
String[] column = {MediaStore.Files.FileColumns.DATA};
//Where
String where = MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
+" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?";
//args
String[] args = new String[]{pdf,doc,docx,xls,xlsx,ppt,pptx,txt,rtx,rtf,html};
Cursor fileCursor = getActivity().getContentResolver().query(table, column, where, args, null);
while (fileCursor.moveToNext()) {
//your code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.