2016-02-05 10 views
1

Я пытаюсь получить тип MIME для epubfile, который, как и в Википедии, является application/epub+zip. Однако метод возвращает null.getMimeTypeFromExtension для EPUB возвращает 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? Это возможно, потому что есть приложения, которые это делают. (Moon Reader)

+0

[EPUB был добавлен чт 11 декабря 2014 13:07:19] (https://android.googlesource.com/platform/libcore/+log/master/luni/src/main/java/libcore/ net/MimeUtils.java) ... поэтому каждая версия для Android до этого, очевидно, вернет нуль ... – Selvin

+0

Можете ли вы подтвердить версию Android? –

+0

И, очевидно, как это сделать для более старых устройств? –

ответ

0

Это работает.

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(); 

     }