android webview中使用Java調(diào)用JavaScript方法并獲取返回值
在android平板上用webview打開一個(gè)網(wǎng)頁,調(diào)用里面的javascript方法,同時(shí)相互傳參。
網(wǎng)上例子很少啊,基本都不能獲取返回值,貼一個(gè)自己最后調(diào)試完的代碼如下:
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是內(nèi)部類,代碼在后面。stub是接口名字。
//x.loadUrl("http://192.168.1.1/init.html");//這句是載入一個(gè)html頁面。但是因?yàn)橹苯觢oad一個(gè)網(wǎng)頁會(huì)有延遲,所以最好用下面這句:
x.loadDataWithBaseURL("", data, "text/html", "UTF-8",""); //這句里面data是init.html的內(nèi)容。就是代碼。直接用FileInputStream獲取到就好。
x.loadUrl("javascript:setValuesJson('hello world')"); //hello world是給JavaScript傳遞的參數(shù)。setValuesJson是頁面里JavaScript的方法。如果傳遞的參數(shù)中有雙引號(hào)的話,用下面的寫法:
String url = "javascript:setValuesJson(\"" + jsonString + "\")";
x.loadUrl(url);
.........
}//onCreate結(jié)束
再寫一個(gè)內(nèi)部類:
private class JsToJava
{
public void jsMethod(String paramFromJS)
{
//Log.i("CDH", paramFromJS);
System.out.println("js返回結(jié)果" + paramFromJS);//處理返回的結(jié)果
}
}
JavaScript代碼:
<script type="text/javascript">
function setValuesJson(param)
{
alert(param);//param是java傳過來的值,即"hello world".
var result = "傳回Java的string";
window.stub.jsMethod(result);//用接口stub, 通過調(diào)用內(nèi)部類中的方法jsMethod給java傳回result。
}
</script>
搞定。
- android WebView加載html5介紹
- Android中實(shí)現(xiàn)Webview頂部帶進(jìn)度條的方法
- Android WebView使用方法詳解 附j(luò)s交互調(diào)用方法
- android中webview控件和javascript交互實(shí)例
- 在Android系統(tǒng)中使用WebViewClient處理跳轉(zhuǎn)URL的方法
- Android中Webview打開網(wǎng)頁的同時(shí)發(fā)送HTTP頭信息方法
- Android開發(fā)之WebView組件的使用解析
- 解析Android中webview和js之間的交互
- Android中 webView調(diào)用JS出錯(cuò)的解決辦法
- Android Webview滑進(jìn)出屏幕閃爍的解決方法
相關(guān)文章
android實(shí)現(xiàn)簡單底部導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)簡單底部導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Android 判斷是開發(fā)debug模式,還是發(fā)布release模式的方法
下面小編就為大家?guī)硪黄狝ndroid 判斷是開發(fā)debug模式,還是發(fā)布release模式的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別
這篇文章主要介紹了Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別的相關(guān)資料,需要的朋友可以參考下2016-12-12Android ListView與getView調(diào)用卡頓問題解決辦法
這篇文章主要介紹了Android ListView與getView調(diào)用卡頓問題解決辦法的相關(guān)資料,這里提供實(shí)例及解決辦法幫助大家解決這種問題,需要的朋友可以參考下2017-08-08Android Application存取公共數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Android Application存取公共數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07Android手機(jī)端小米推送Demo解析和實(shí)現(xiàn)方法
本篇文章主要是介紹了Android端小米推送Demo解析和實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10Android開發(fā)筆記之:對實(shí)踐TDD的一些建議說明
本篇文章是對Android中實(shí)踐TDD的一些建議進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Android系統(tǒng)檢測程序內(nèi)存占用各種方法
這篇文章主要介紹了Android系統(tǒng)檢測程序內(nèi)存占用各種方法,本文講解了檢查系統(tǒng)總內(nèi)存、檢查某個(gè)程序的各類型內(nèi)存占用、檢查程序狀態(tài)、檢查程序各部分的內(nèi)存占用等內(nèi)容,需要的朋友可以參考下2015-03-03android?studio數(shù)據(jù)存儲(chǔ)建立SQLite數(shù)據(jù)庫實(shí)現(xiàn)增刪查改
這篇文章主要介紹了vandroid?studio數(shù)據(jù)存儲(chǔ)建立SQLite數(shù)據(jù)庫實(shí)現(xiàn)增刪查改,分別使用sqlite3工具和Android代碼的方式建立SQLite數(shù)據(jù)庫,具體內(nèi)容,需要的小伙伴可以參考下面文章得詳細(xì)內(nèi)容2021-12-12Android開發(fā)實(shí)現(xiàn)的幾何圖形工具類GeometryUtil完整實(shí)例
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)的幾何圖形工具類GeometryUtil,涉及Android坐標(biāo)圖形數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-11-11