From be74d75e1c0fa698b1dcb2e11d98f2fb9f1c1846 Mon Sep 17 00:00:00 2001 From: x0b Date: Wed, 21 Aug 2019 21:20:10 +0200 Subject: [PATCH] add mimeType-decoding for types not already recognized by rclone Signed-off-by: x0b --- .../pkay/rcloneexplorer/Items/FileItem.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java b/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java index 9d281d00..b25c4b8d 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java +++ b/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java @@ -3,6 +3,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.format.DateUtils; +import android.webkit.MimeTypeMap; import java.text.DateFormat; import java.text.ParseException; @@ -32,7 +33,7 @@ public FileItem(RemoteItem remote, String path, String name, long size, String m this.modTime = modTimeToMilis(modTime); this.humanReadableModTime = modTimeToHumanReadable(modTime); this.formattedModTime = modTimeToFormattedTime(modTime); - this.mimeType = mimeType; + this.mimeType = getMimeType(mimeType, path); this.isDir = isDir; } @@ -98,6 +99,22 @@ public boolean isDir() { return isDir; } + private String getMimeType(String mimeType, String path) { + if ("application/octet-stream".equals(mimeType)) { + String extension = MimeTypeMap.getFileExtensionFromUrl(path); + if ((extension == null || "".equals(extension)) && path.lastIndexOf('.') < path.length() + 1) { + extension = path.substring(path.lastIndexOf('.') + 1); + } + if (extension != null) { + String mimeQueryResult = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + if (null != mimeQueryResult) { + mimeType = mimeQueryResult; + } + } + } + return mimeType; + } + private String sizeToHumanReadable(long size) { int unit = 1000; if (size < unit) return size + " B";