Usage of WebView.addJavascriptInterface()

by Anton Pirker » Mon, 12 Oct 2009 21:53:08 GMT


Sponsored Links
 Hey List!

I have an Application that displays a Website in an WebView.  This is 
working quite good.
Now i want give the Website access to a Class of my Android Project with
WebView.addJavascriptInterface() [1]

This is my Java Code (in an Activity)


public void onCreate(Bundle savedInstanceState) {
    FileUtil fu = new FileUtil();

    WebView appView = (WebView) findViewById(R.id.appView);
    appView.getSettings().setJavaScriptEnabled(true);
    appView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    appView.addJavascriptInterface(fu, "FileUtil");
    appView.loadUrl(someUrl);
}

// The FileUtils class is a very basic test-class:
public class FileUtil {
    public FileUtils() { }

    public int read() {
       return 99;
    }
}


And now i have a index.html accessable via the url <someUrl>
In this html page i try to call window.FileUtil.read() but nothing happens.
Then I displayed all members of the window object and my "FileUtil" is 
missing.

Have i forgot anything? How can i make my Java methods accessable from 
Javascript?


Thanks in advance!
Anton, Freelance Android Developer

[1] 
 http://developer.android.com/reference/android/webkit/WebView.html #addJavascriptInterface(java.lang.Object,%20java.lang.String)

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



Usage of WebView.addJavascriptInterface()

by Mark Murphy » Mon, 12 Oct 2009 22:10:08 GMT


 


Dump the "window." -- just reference FileUtil directly.


It's not supposed to be there. You do not get an actual Javascript
object from addJavascriptInterface().

It is a bit more like you get a new Javascript keyword -- you can write
"FileUtil.read()", and the Javascript interpreter will interpret it, but
there is no FileUtil object.

-- 
Mark Murphy (a Commons Guy)
 http://commonsware.com  |  http://twitter.com/commonsguy 

Android App Developer Books:  http://commonsware.com/books.html 

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


Sponsored Links


Usage of WebView.addJavascriptInterface()

by Anton Pirker » Mon, 12 Oct 2009 23:11:12 GMT


 Hey Mark!





Ah, i see! That's why it is called addJavascriptINTERFACE() and not 
addJavascriptObject ;)

I am trying to create a file on the sd card from the website and i was 
testing on my phone that was connected to the notebook with an usb cable 
and the usb sharing was activated. and it seems if all this is true i 
cannot write to the sd-card! took my quite a while to find out about that.


Thanks for your hints!
Anton


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



Other Threads

1. switch soundtracks of an mp4 file

Hey,

I have written a little videoplayer for android and now I'm looking
for a solution to switch between two or more soundtracks which are in
the video container. Is this even possible with the standard
mediaplayer class?

-- 

2. Access to AT command interface of GSM radio

Hi,

I'm looking for any tricks to intercept USSD response from my carrier
to receive my current balance.
Do anybody know how to get access to AT command interface of GSM radio?

---
Best Regards
Alexey

-- 

3. null returned for number

4. listactivity within a layout

5. Mod: Gathering ID Android bulan Agustus 2010

6. Developing a website for nice/elegant visualization in Android Tablet...

7. Multiple Eclipse projects no longer get included