我这样通过下面的代码拿到了手机内的pdf文件,但是我试了一下,比如第一次进来搜索到手机内有10个pdf文件,我退出来,然后让微信朋友给我发一个pdf,我打开pdf,我确认这个pdf已经保存在手机内了,再打开搜索pdf的Activity,这时应该有11个pdf文件,但还是只有10个pdf文件,这个该怎么解决呢?在网上搜了一下,说是没有把文件添加到MediaStore里面,但是应该怎么操作呢?最好有相关代码,谢谢
` private void getAllPdf() {
ContentResolver cr = getActivity().getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
String[] projection = null;
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
String[] selectionArgs = null; // there is no ? in selection so null here
String sortOrder = null; // unordered
Cursor allNonMediaFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);
// only pdf
String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
String[] selectionArgsPdf = new String[]{mimeType};
Cursor cursor = cr.query(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);
while (cursor.moveToNext()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
String filePath = cursor.getString(column_index);//所有pdf文件路径
String fileName = getFileNameWithSuffix(filePath);//所有文件名称
}
}
`
MediaStore
文件记录都是存储在数据库,所以文件查找都是在查询数据库;File
则是按目录树存储的,文件查找那就需要从根目录开始遍历。相比之下,还是使用MediaStore
更优。传送门:android – MediaStore – Uri查询所有类型的文件(媒体和非媒体)