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で困っている場合は是非試してください。
