Merge pull request #274 from cinthiaro/master

Open file in Android when the mime type is not specified
This commit is contained in:
Aaron Faber 2019-10-29 13:09:06 +00:00 committed by GitHub
commit dac2053dfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,6 +35,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.webkit.MimeTypeMap;
import io.github.pwlin.cordova.plugins.fileopener2.FileProvider; import io.github.pwlin.cordova.plugins.fileopener2.FileProvider;
@ -102,6 +103,10 @@ public class FileOpener2 extends CordovaPlugin {
File file = new File(fileName); File file = new File(fileName);
if (file.exists()) { if (file.exists()) {
try { try {
if (contentType == null || contentType.trim().equals("")) {
contentType = _getMimeType(fileName);
}
Intent intent; Intent intent;
if (contentType.equals("application/vnd.android.package-archive")) { if (contentType.equals("application/vnd.android.package-archive")) {
// https://stackoverflow.com/questions/9637629/can-we-install-an-apk-from-a-contentprovider/9672282#9672282 // 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 { private void _uninstall(String packageId, CallbackContext callbackContext) throws JSONException {
if (this._appIsInstalled(packageId)) { if (this._appIsInstalled(packageId)) {
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE); Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);