try to guess mime type via extension in display name
This commit is contained in:
parent
28856aaf9f
commit
16300727d1
|
@ -16,7 +16,9 @@
|
||||||
package eu.siacs.conversations.utils;
|
package eu.siacs.conversations.utils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.provider.OpenableColumns;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -538,18 +540,20 @@ public final class MimeUtils {
|
||||||
String mimeType;
|
String mimeType;
|
||||||
try {
|
try {
|
||||||
mimeType = context.getContentResolver().getType(uri);
|
mimeType = context.getContentResolver().getType(uri);
|
||||||
} catch (Throwable throwable) {
|
} catch (final Throwable throwable) {
|
||||||
mimeType = null;
|
mimeType = null;
|
||||||
}
|
}
|
||||||
// try the extension
|
// try the extension
|
||||||
if ((mimeType == null || mimeType.equals("application/octet-stream")) && uri.getPath() != null) {
|
if (mimeType == null || mimeType.equals("application/octet-stream")) {
|
||||||
String path = uri.getPath();
|
final String path = uri.getPath();
|
||||||
int start = path.lastIndexOf('.') + 1;
|
if (path != null) {
|
||||||
if (start < path.length()) {
|
mimeType = guessFromPath(path);
|
||||||
final String guess = MimeUtils.guessMimeTypeFromExtension(path.substring(start));
|
}
|
||||||
if (guess != null) {
|
}
|
||||||
mimeType = guess;
|
if (mimeType == null && "content".equals(uri.getScheme())) {
|
||||||
}
|
final String name = getDisplayName(context, uri);
|
||||||
|
if (name != null) {
|
||||||
|
mimeType = guessFromPath(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// sometimes this works (as with the commit content api)
|
// sometimes this works (as with the commit content api)
|
||||||
|
@ -559,6 +563,23 @@ public final class MimeUtils {
|
||||||
return mimeType;
|
return mimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getDisplayName(final Context context, final Uri uri) {
|
||||||
|
try (Cursor cursor = context.getContentResolver().query(uri, null, null, null, null)) {
|
||||||
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
|
return cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String guessFromPath(final String path) {
|
||||||
|
final int start = path.lastIndexOf('.') + 1;
|
||||||
|
if (start < path.length()) {
|
||||||
|
return MimeUtils.guessMimeTypeFromExtension(path.substring(start));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static String extractRelevantExtension(URL url) {
|
public static String extractRelevantExtension(URL url) {
|
||||||
String path = url.getPath();
|
String path = url.getPath();
|
||||||
return extractRelevantExtension(path, true);
|
return extractRelevantExtension(path, true);
|
||||||
|
|
Loading…
Reference in a new issue