简体   繁体   English

如何使用Android中的MediaStore.Files从内部和外部存储中获取所有.pdf文件

[英]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.

相关问题 如何使用MediaStore获取存储在android的内部存储和外部存储中的所有音乐文件? - How to get all music files stored in internal storage and external storage in android using MediaStore? 如何从Android的内部和外部存储中获取所有.mp3文件 - How to get all .mp3 files from internal and external storage in android Android - 如何从内部存储中获取所有文件路径或从内部存储中删除所有文件 - Android - How to get all file path from internal storage or delete all files from internal storage Android - 如何从外部存储读取文本文件 - Android - How can I read text files from external storage 如何从 Android 的外部存储中加载所有音乐文件? - How can I load all music files from external storage on Android? 从android上的外部存储中获取所有.pdf文件 - Getting all .pdf files from External storage on android Android MediaStore.Files.getContentUri 如何获取应用程序内部的文件夹 - Android MediaStore.Files.getContentUri how to get a folder internal to the app 如何从外部sdcard和手机存储中获取所有文件(移动存储内部)? - How to get all files from external sdcard and phone storage (internal with mobile memory)? 如何使用android studio从应用程序中的内部或外部存储(SD卡)读取文件? - How can I read Files from Inter or External Storage (SD Card) in app using android studio? 获取内部和外部存储中所有文件夹中的所有文件 - Get all files in all folders in internal and external storage
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM