platform/android/Rhodes/src/com/rhomobile/rhodes/uri/LocalFileHandler.java in rhodes-7.1.17 vs platform/android/Rhodes/src/com/rhomobile/rhodes/uri/LocalFileHandler.java in rhodes-7.4.1

- old
+ new

@@ -24,12 +24,14 @@ * http://rhomobile.com *------------------------------------------------------------------------*/ package com.rhomobile.rhodes.uri; +import java.lang.Exception; import java.net.URISyntaxException; import java.util.regex.Pattern; +import java.io.File; import com.rhomobile.rhodes.LocalFileProvider; import com.rhomobile.rhodes.Logger; import android.content.Context; @@ -67,30 +69,33 @@ String noAnchorUrl = URLUtil.stripAnchor(url); if (isHtmlUrl(noAnchorUrl)) { return false; } + boolean isHomeDir = LocalFileProvider.isHomeDir(ctx, url); + Logger.D(TAG, "Handle URI externally: " + url); - int intentFlags = 0; Uri path = Uri.parse(url); - - //Uri newUri = LocalFileProvider.overrideUri(path); Uri newUri = LocalFileProvider.overrideSystemUri(path); + if(newUri != null) { - intentFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION; url = Uri.decode(newUri.toString()); } - intentFlags=Intent.FLAG_GRANT_READ_URI_PERMISSION; - Intent intent = Intent.parseUri(url, intentFlags); + + Intent intent = Intent.parseUri(url, Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setAction(Intent.ACTION_VIEW); - if(newUri==null && url.contains("file://")) - { + if (newUri != null && isHomeDir){ + LocalFileProvider.grantPermissionOnSharingContentIntent(ctx, intent, newUri); + } + + if(newUri == null && url.contains("file://")) + { try{ - String extension = MimeTypeMap.getFileExtensionFromUrl(url); - String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); + String extension = MimeTypeMap.getFileExtensionFromUrl(url); + String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); if(mimeType!=null && mimeType.contains("image")) intent.setDataAndType(path, "image/*"); else if(mimeType!=null && mimeType.contains("audio")) intent.setDataAndType(path, "audio/*"); else if(mimeType!=null && mimeType.contains("video")) @@ -98,20 +103,18 @@ else if(mimeType!=null) { intent.setDataAndType(path, mimeType); } else { intent.setDataAndType(path, "*/*"); } - } - catch(Exception ex) - { - Logger.E(TAG, ex.getMessage()); - intent.setDataAndType(path, "*/*"); - } + } catch(Exception ex) { + Logger.E(TAG, ex.getMessage()); + intent.setDataAndType(path, "*/*"); + } - } + } //ctx.startActivity(Intent.createChooser(intent, "Open in...")); - ctx.startActivity(intent); + ctx.startActivity(intent); return true; } }