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;
}
}