diff options
author | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-02-10 18:42:40 +0100 |
---|---|---|
committer | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-02-10 18:03:49 +0000 |
commit | 5654e0f6afd93b371954456523460397564b4602 (patch) | |
tree | c15993be243a6a6313544652e12c93d156464ccd | |
parent | b91116afb16139208fb5a4bccf45b4e06df77c8a (diff) |
Android: fix share feature for .odp/.odt files
Added our own map of MIME types because we cannot rely on Android's.
Change-Id: I11d4b639f42d30aa8adb0ea092797fb30b4fc8b9
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/libreoffice/ui/FileUtilities.java | 30 | ||||
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java | 5 |
2 files changed, 31 insertions, 4 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/FileUtilities.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/FileUtilities.java index f658d92f9b41..118eded4e9bc 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/FileUtilities.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/FileUtilities.java @@ -18,6 +18,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Comparator; import android.util.Log; +import android.webkit.MimeTypeMap; public class FileUtilities { static final int ALL = -1; @@ -42,6 +43,7 @@ public class FileUtilities { static final int SORT_SMALLEST = 5; private static final Map<String,Integer> mExtnMap = new HashMap<String,Integer>(); + private static final Map<String, String> extensionToMimeTypeMap = new HashMap<String, String>(); static { // Please keep this in sync with AndroidManifest.xml @@ -97,6 +99,22 @@ public class FileUtilities { mExtnMap.put(".svm", DRAWING); mExtnMap.put(".wmf", DRAWING); mExtnMap.put(".svg", DRAWING); + + // Some basic MIME types + // Android's MimeTypeMap lacks some types that we need + extensionToMimeTypeMap.put("odb", "application/vnd.oasis.opendocument.database"); + extensionToMimeTypeMap.put("odf", "application/vnd.oasis.opendocument.formula"); + extensionToMimeTypeMap.put("odg", "application/vnd.oasis.opendocument.graphics"); + extensionToMimeTypeMap.put("otg", "application/vnd.oasis.opendocument.graphics-template"); + extensionToMimeTypeMap.put("odi", "application/vnd.oasis.opendocument.image"); + extensionToMimeTypeMap.put("odp", "application/vnd.oasis.opendocument.presentation"); + extensionToMimeTypeMap.put("otp", "application/vnd.oasis.opendocument.presentation-template"); + extensionToMimeTypeMap.put("ods", "application/vnd.oasis.opendocument.spreadsheet"); + extensionToMimeTypeMap.put("ots", "application/vnd.oasis.opendocument.spreadsheet-template"); + extensionToMimeTypeMap.put("odt", "application/vnd.oasis.opendocument.text"); + extensionToMimeTypeMap.put("odm", "application/vnd.oasis.opendocument.text-master"); + extensionToMimeTypeMap.put("ott", "application/vnd.oasis.opendocument.text-template"); + extensionToMimeTypeMap.put("oth", "application/vnd.oasis.opendocument.text-web"); } private static final String getExtension(String filename) @@ -124,6 +142,18 @@ public class FileUtilities { return type; } + static String getMimeType(String filename) + { + String extension = MimeTypeMap.getFileExtensionFromUrl(filename); + String mime = extensionToMimeTypeMap.get(extension); + if(mime == null) { + //fallback to Android's MimeTypeMap + mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension( + extension); + } + return mime; + } + // Filter by mode, and/or in future by filename/wildcard static private boolean doAccept(String filename, int byMode, String byFilename) { diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index 25870c069ab4..24cff823b2a0 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -54,7 +54,6 @@ import android.view.View; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.View.OnClickListener; -import android.webkit.MimeTypeMap; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; @@ -321,9 +320,7 @@ public class LibreOfficeUIActivity extends LOAbout implements ActionBar.OnNaviga File file = filePaths.get(position).getDocument(); Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); Uri uri = Uri.fromFile(file); - String extension = MimeTypeMap.getFileExtensionFromUrl(uri.toString()); - sharingIntent.setType(MimeTypeMap.getSingleton() - .getMimeTypeFromExtension(extension)); + sharingIntent.setType(FileUtilities.getMimeType(file.getName())); sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, uri); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, file.getName()); |