Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is WebView unable to open some local URLs (Android)?

I have a WebView that I'm using to open some files stored in the assets/ directory of my project. It works fine for most of the files, but there's one in particular (and I'm sure others I haven't found) that it just will not open.

The file I'm having problems with is named:

"assets/ContentRoot/Photos/XXX Software Logo - jpg - 75%.JPG"

When I pass it to WebView, and it shows the error page, it shows it as:

"file:///android_asset/ContentRoot/Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%.JPG"

I then tried running URLEncoder.encode() on it and got the error page with the URL presented as:

"file:///android_asset/ContentRoot/Photos/XXX+Software+Logo+-+jpg+-+75%.JPG"

Neither of these URLs were able to open the file (and they both look okay to me). Anyone have any ideas?

UPDATE: If I encode the % by hand (using %25, as commonsware.com suggested) then it loads the image, but it tries to parse it as text, not as an image, so I just get a lot of (basically) garbage.

Hosted by imgur.com

Also, referring to the image in an HTML document with a relative URL isn't working (probably because it's not being parsed as an image?):

<img src="../Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%.JPG" />
<img src="../Photos/XXX%20Software%20Logo%20-%20jpg%20-%2075%25.JPG" />
like image 794
Jeremy Logan Avatar asked Dec 17 '22 04:12

Jeremy Logan


1 Answers

Okay, after spending way too long on this, I've figured out what's going on. Basically, if images stored in the assets/ directory contain a space (e.g., " ") in their file name, they won't render as images.

myWebView.loadUrl("file:///android_asset/testimage.jpg");

works fine. However,

myWebView.loadUrl("file:///android_asset/test+image.jpg");

just throws a not found error and

myWebView.loadUrl("file:///android_asset/test image.jpg");
// and
myWebView.loadUrl("file:///android_asset/test%20image.jpg");

show it improperly displayed (as text... see screenshot in question).

This unexpected behaviour is present on (at least) 1.5, 1.6, and 2.0 and I filed a bug report.

like image 86
Jeremy Logan Avatar answered Dec 21 '22 10:12

Jeremy Logan