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";