【问题标题】:getMimeTypeFromExtension for EPUB returns nullEPUB 的 getMimeTypeFromExtension 返回 null
【发布时间】:2016-02-05 10:39:17
【问题描述】:

我正在尝试获取 epubfile 的 MIME 类型,正如在 Wikipedia 上收听的那样,它是 application/epub+zip。但是,该方法返回 null。

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
String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("epub"); //this line here returns null
// String mimeType = "application/epub+zip" this returns null too. 
String[] selectionArgsPdf = new String[]{ mimeType };
Cursor cur = cr.query(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);

还有其他方法可以导入 epub 文件吗?这是可能的,因为有应用程序可以做到这一点。 (月球阅读器)

【问题讨论】:

  • epub was added Thu Dec 11 13:07:19 2014 ... 所以在此之前的每个 android 版本显然都会返回 null ...
  • 能确认安卓版本吗?
  • 很明显,我如何让旧设备也能正常工作?
  • 显然你必须得到真实的文件名并检查扩展名......
  • 我已经知道扩展名了。这就是为什么上面的代码是这样的。

标签: android epub mediastore


【解决方案1】:

这行得通。

Uri uri = MediaStore.Files.getContentUri("external");

    // every column, although that is huge waste, you probably need
    // BaseColumns.DATA (the path) only.
            String[] projection = null;

    // exclude media files, they would be here also.
            String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                    + MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
            String[] selectionArgs = null; // there is no ? in selection so null here

            Cursor cur = cr.query(uri, projection, selection,selectionArgs,null);
            int NumberOfPDFS =cur.getCount();
            cl(Integer.toString(NumberOfPDFS));


            cur.moveToFirst();
            while (cur.isAfterLast() == false) {
                if(cur.getString(1).lastIndexOf(".epub")!=-1){
                    //do whatever.
                }

                cur.moveToNext();
            }
            cur.close();

        }

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2019-10-21
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多