android webview中使用Java調用JavaScript方法并獲取返回值
在android平板上用webview打開一個網頁,調用里面的javascript方法,同時相互傳參。
網上例子很少啊,基本都不能獲取返回值,貼一個自己最后調試完的代碼如下:
Java:
protected void onCreate(Bundle savedInstanceState)
{
........
x = (WebView)this.findViewById(R.id.webView_viewTable);
x.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
x.getSettings().setBuiltInZoomControls(true);
x.getSettings().setJavaScriptEnabled(true);
x.addJavascriptInterface(new JsToJava(), "stub"); //JsToJava是內部類,代碼在后面。stub是接口名字。
//x.loadUrl("http://192.168.1.1/init.html");//這句是載入一個html頁面。但是因為直接load一個網頁會有延遲,所以最好用下面這句:
x.loadDataWithBaseURL("", data, "text/html", "UTF-8",""); //這句里面data是init.html的內容。就是代碼。直接用FileInputStream獲取到就好。
x.loadUrl("javascript:setValuesJson('hello world')"); //hello world是給JavaScript傳遞的參數。setValuesJson是頁面里JavaScript的方法。如果傳遞的參數中有雙引號的話,用下面的寫法:
String url = "javascript:setValuesJson(\"" + jsonString + "\")";
x.loadUrl(url);
.........
}//onCreate結束
再寫一個內部類:
private class JsToJava
{
public void jsMethod(String paramFromJS)
{
//Log.i("CDH", paramFromJS);
System.out.println("js返回結果" + paramFromJS);//處理返回的結果
}
}
JavaScript代碼:
<script type="text/javascript">
function setValuesJson(param)
{
alert(param);//param是java傳過來的值,即"hello world".
var result = "傳回Java的string";
window.stub.jsMethod(result);//用接口stub, 通過調用內部類中的方法jsMethod給java傳回result。
}
</script>
搞定。
相關文章
Android 判斷是開發(fā)debug模式,還是發(fā)布release模式的方法
下面小編就為大家?guī)硪黄狝ndroid 判斷是開發(fā)debug模式,還是發(fā)布release模式的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別
這篇文章主要介紹了Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別的相關資料,需要的朋友可以參考下2016-12-12
Android ListView與getView調用卡頓問題解決辦法
這篇文章主要介紹了Android ListView與getView調用卡頓問題解決辦法的相關資料,這里提供實例及解決辦法幫助大家解決這種問題,需要的朋友可以參考下2017-08-08
Android Application存取公共數據的實例詳解
這篇文章主要介紹了Android Application存取公共數據的實例詳解的相關資料,需要的朋友可以參考下2017-07-07
Android開發(fā)筆記之:對實踐TDD的一些建議說明
本篇文章是對Android中實踐TDD的一些建議進行了詳細的分析介紹,需要的朋友參考下2013-05-05
android?studio數據存儲建立SQLite數據庫實現增刪查改
這篇文章主要介紹了vandroid?studio數據存儲建立SQLite數據庫實現增刪查改,分別使用sqlite3工具和Android代碼的方式建立SQLite數據庫,具體內容,需要的小伙伴可以參考下面文章得詳細內容2021-12-12
Android開發(fā)實現的幾何圖形工具類GeometryUtil完整實例
這篇文章主要介紹了Android開發(fā)實現的幾何圖形工具類GeometryUtil,涉及Android坐標圖形數值運算相關操作技巧,需要的朋友可以參考下2017-11-11

