weird behaviour with WebView.loadDataWithBaseURL

by Jason Proctor » Wed, 08 Jul 2009 03:53:26 GMT


Sponsored Links
 i install a WebViewClient to intercept links using 
shouldOverrideUrlLoading(). i fetch the URL content myself, 
preprocess it, then feed it to the browser using 
loadDataWithBaseURL(). as the base URL, i use the original URL of the 
request.

this mechanism has been working reliably for a while, but recently it 
broke and i'm not sure what's going on. the symptoms i'm seeing are 
inconsistent despite the same inputs being presented. most of the 
time, the WebView displays the contents of the base URL, completely 
ignoring the "data" parameter. this is despite the preprocessing 
actually taking place and verifiably producing the correct output 
(which btw contains no links, relative or otherwise).

after reading the documentation on the loadDataWithBaseURL() method, 
which includes a note on file: URLs etc, i've been playing with the 
baseURL to see if that changes the behaviour. passing null as the 
base URL usually results in success, but of course i need relative 
links to work properly so it's not going to fly as a real solution. 
passing an http: URL initially worked, but after a few iterations 
broke, and the WebView then started just displaying the content of 
the http: baseURL.

all of this time, the failURL parameter was set to null, just so i'd 
be sure that it wasn't showing that instead.

also, Javascript and file access is enabled on the WebView via the 
WebSettings API.

IMHO, the WebView should never display the contents of the base URL. 
it's there as a string only in order to provide context for relative 
links in the data. i see notifications in my WebViewClient that it's 
calling onPageStarted() and onPageFinished() for the base URL, so 
it's doing *something* with it.

IMHO also, the WebView should call an installed WebViewClient's 
onReceivedError() method if errors happen. since 1.5 i have *never* 
seen it do this on Android (the equivalent works on iPhone, as does 
most everything else). i can see the justification for not calling it 
if there is a failURL installed, but not if there isn't.

this is crazy as i'm seeing different behaviour for the same inputs. 
literally i could see something work (like with an http: base URL) 
then rebuild it with *no* logic changes, and it would break.

any help appreciated. btw this list still does not get on with any of 
my addresses - i suspect gmail is filtering posts, now *all* posts 
not just mine, before they get to the per-user spam filter - so 
please copy directly on replies.

thanks much
-- 
jason.software.particle

--~--~---------~--~----~------------~-------~--~----~



Other Threads

1. dx moaning

I've been using ant to build my .apk on one of my office systems.  Works
fine.  Now I'm preparing for a trip and I want to continue development on my
netbook, but I'm haviing trouble with the build process.  It appears to run
the compiler OK, and generates a set of class files identical to that on my
first system (verified by checksums), but the netbook build fails in the dx
phase with messages as shown below.  I don't know where to look to determine
what is different about the netbook installation that causes different
behavior, and I don't have a very good idea about how to interpret what the
messages are telling me in order to determine the cause or how to correct
it.  Help would be appreciated.

dex:
     [echo] Converting compiled files and external libraries into
bin/classes.dex...
    [apply]
    [apply] trouble processing:
    [apply] invalid constant pool index 0000
    [apply] ...while parsing attributes[1]
    [apply] ...while parsing Code attribute at offset 00000715
    [apply] ...while parsing attributes[0]
    [apply] ...while parsing methods[0]
    [apply] ...while parsing net/from/apprise/Apprise.class
    [apply] ...while processing net/from/apprise/Apprise.class
    [apply]
    [apply] trouble processing:
    [apply] invalid constant pool index 0000
    [apply] ...while parsing attributes[1]
    [apply] ...while parsing Code attribute at offset 000000ff
    [apply] ...while parsing attributes[0]
    [apply] ...while parsing methods[0]
    [apply] ...while parsing net/from/apprise/R$attr.class
    [apply] ...while processing net/from/apprise/R$attr.class
    [apply]
...more stuff like this...

--~--~---------~--~----~------------~-------~--~----~

2. access android device on pc

Hi Experts,

i have recorded one file in android and trying copy it.
i attached device to my pc (windows), got removeable device but cant
enter into it.

any solution?
--~--~---------~--~----~------------~-------~--~----~

3. The problem about the sensor!!!

4. Application that loops every minute - how to efficiently do it

5. Buffering Background Image - Graphics Advice Sought

6. Alert dialog in Android-SDK-1.1-Release 1

7. Home screen customization WRT certification