From 82f987143bf9b37c8fda2e5f09bc1e4f5da9eeb7 Mon Sep 17 00:00:00 2001 From: Cinthia Rodriguez Date: Mon, 26 Aug 2019 13:11:58 -0600 Subject: [PATCH] Open file in Android when the mime type is not specified. --- .../plugins/fileopener2/FileOpener2.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener2.java b/src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener2.java index e96fdbf..de79d85 100644 --- a/src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener2.java +++ b/src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener2.java @@ -35,6 +35,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; +import android.webkit.MimeTypeMap; import io.github.pwlin.cordova.plugins.fileopener2.FileProvider; @@ -102,6 +103,10 @@ public class FileOpener2 extends CordovaPlugin { File file = new File(fileName); if (file.exists()) { try { + if (contentType == null || contentType.trim().equals("")) { + contentType = _getMimeType(fileName); + } + Intent intent; if (contentType.equals("application/vnd.android.package-archive")) { // https://stackoverflow.com/questions/9637629/can-we-install-an-apk-from-a-contentprovider/9672282#9672282 @@ -151,6 +156,18 @@ public class FileOpener2 extends CordovaPlugin { } } + private String _getMimeType(String url) { + String mimeType = "*/*"; + int extensionIndex = url.lastIndexOf('.'); + if (extensionIndex > 0) { + String extMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(url.substring(extensionIndex+1)); + if (extMimeType != null) { + mimeType = extMimeType; + } + } + return mimeType; + } + private void _uninstall(String packageId, CallbackContext callbackContext) throws JSONException { if (this._appIsInstalled(packageId)) { Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);