Androidアプリでファイルエクスプローラーを開発しているのですが、ストレージから取得してきたファイルのMimeTypeを取得するのにすこしの苦労したので書きとめておきます。
最初はMimeUtilというライブラリを使用してMimeTypeを取得しようとしていました。
1 2 3 4 5 6 7 |
if (mimeUtil == null) { MimeUtil2 mimeUtil = new MimeUtil2(); mimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector"); } String mimeType = MimeUtil2.getMostSpecificMimeType(mimeUtil.getMimeTypes(file)).toString(); |
上記のやり方ではfile
がDirectoy
の場合でも、pdf
の場合であってもちゃんとしたMimeTypeを返却してくれるのですが、file
の拡張子が.xlsx
の場合、MimeTypeがapplication/zip
となってしまいちゃんと認識できないようでした。(StackOverFlowで聞けばと正しい答えが得られたかもしれませんが)
そこでやり方を変え、下記の方法にしたところちゃんとしたMimeTypeを得ることが出来ました。
1 2 3 |
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath()); String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension.toLowerCase()); |
MimeTypeで困っている場合は是非試してください。