2011-05-17 55 views
5

我有一個webview顯示從我自己的服務器的頁面。有沒有可能添加一個javascript方法,這將允許我的android應用程序從webview中讀出一個頁面元素?例如:從WebView的我自己的網頁獲取HTML元素?

// mypage.html 
<html> 
    <p id='abc'>some data</p> 
</html> 

// my android app 
WebView wv = ..; 
String data = wv.getPageElementById('abc'); 

這樣的事情嗎?我自己的頁面,所以我可以但是修改它,我需要使其工作,

感謝

回答

13

好吧,這是我怎麼做的:

<html> 

    <head> 
    <script type="text/javascript"> 

     function onBodyLoad() { 
     var element = document.getElementById("abc"); 
     window.javascriptAccessor.getYerData(element.innerHTML); 
     } 

    </script> 
    </head> 

    <body onload="onBodyLoad()"> 
    <div id="abc">data</p> 
    </body> 
</html> 

然後我的活動:

WebView webview = (WebView)findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.addJavascriptInterface(new JavascriptAccessor(), "javascriptAccessor"); 
webview.setWebViewClient(new WebViewClient() {}); // wouldn't work without this! 
webview.loadUrl(url); 

private class JavascriptAccessor { 
    @SuppressWarnings("unused") 
    public void getYerData(String data) { 
     Log.v(TAG, data); 
    } 
} 

是啊!