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 e96fdbfa..de79d850 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 @@ this software and associated documentation files (the "Software"), to deal in 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 @@ private void _open(String fileArg, String contentType, Boolean openWithDefault, 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 @@ private void _open(String fileArg, String contentType, Boolean openWithDefault, } } + 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);