aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/utils/MimeUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/utils/MimeUtils.java')
-rw-r--r--src/main/java/eu/siacs/conversations/utils/MimeUtils.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/utils/MimeUtils.java b/src/main/java/eu/siacs/conversations/utils/MimeUtils.java
index d4544424..b65eb73c 100644
--- a/src/main/java/eu/siacs/conversations/utils/MimeUtils.java
+++ b/src/main/java/eu/siacs/conversations/utils/MimeUtils.java
@@ -14,6 +14,9 @@
* limitations under the License.
*/
package eu.siacs.conversations.utils;
+import android.content.Context;
+import android.net.Uri;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -484,4 +487,22 @@ public final class MimeUtils {
}
return mimeTypeToExtensionMap.get(mimeType);
}
+
+ public static String guessMimeTypeFromUri(Context context, Uri uri) {
+ // try the content resolver
+ String mimeType = context.getContentResolver().getType(uri);
+ // try the extension
+ if (mimeType == null && uri.getPath() != null) {
+ String path = uri.getPath();
+ int start = path.lastIndexOf('.') + 1;
+ if (start < path.length()) {
+ mimeType = MimeUtils.guessMimeTypeFromExtension(path.substring(start));
+ }
+ }
+ // sometimes this works (as with the commit content api)
+ if (mimeType == null) {
+ mimeType = uri.getQueryParameter("mimeType");
+ }
+ return mimeType;
+ }
}