android webview中使用Java調(diào)用JavaScript方法并獲取返回值
在android平板上用webview打開一個(gè)網(wǎng)頁(yè),調(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è)面。但是因?yàn)橹苯觢oad一個(gè)網(wǎng)頁(yè)會(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是頁(yè)面里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傳過(guò)來(lái)的值,即"hello world".
var result = "傳回Java的string";
window.stub.jsMethod(result);//用接口stub, 通過(guò)調(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)頁(yè)的同時(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)ActionBar的home圖標(biāo)動(dòng)畫切換效果
這篇文章主要介紹了Android編程實(shí)現(xiàn)ActionBar的home圖標(biāo)動(dòng)畫切換效果,涉及Android布局、樣式、Activity及菜單相關(guān)操作技巧,需要的朋友可以參考下2017-01-01
Android編程設(shè)計(jì)模式之解釋器模式詳解
這篇文章主要介紹了Android編程設(shè)計(jì)模式之解釋器模式,詳細(xì)分析了Android解釋器模式的概念、原理、使用場(chǎng)景、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-12-12
Android四大組件:Activity/Service/Broadcast/ContentProvider作用示例
Android是一種基于Linux,自由及開放源代碼的操作系統(tǒng),Android分為四個(gè)層,從高層到底層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層,Android有四大基本組件:Activity、Service服務(wù)、BroadcastReceiver廣播接收器、Content Provider內(nèi)容提供者2023-11-11
Android開發(fā)VR實(shí)戰(zhàn)之播放360度全景視頻
這篇文章主要為大家詳細(xì)介紹了Android開發(fā)VR實(shí)戰(zhàn)之播放360度全景視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android編程開發(fā)之多點(diǎn)觸摸(Multitouch)實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程開發(fā)之多點(diǎn)觸摸(Multitouch)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Android多點(diǎn)觸摸的相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2016-08-08
android9.0 默認(rèn)apk權(quán)限添加方法
本文給大家分享android9.0 默認(rèn)apk權(quán)限添加方法,默認(rèn)賦予全部權(quán)限,根據(jù)包名賦予權(quán)限,通過(guò)default-permissions-google.xml的方式實(shí)現(xiàn),文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06
使用Android studio創(chuàng)建的AIDL編譯時(shí)找不到自定義類的解決辦法
這篇文章主要介紹了使用Android studio創(chuàng)建的AIDL編譯時(shí)找不到自定義類的解決辦法的相關(guān)資料,需要的朋友可以參考下2016-02-02

