日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android与js交互

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android与js交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先引用一篇文章,看過這篇文章基本上就明白android大致與js是如何交互的了

Android與HTML+JS交互入門

----------------------------分割線-----------------------------------

首先要知道js是啥,js就相當于在html內的函數方法,全稱為javascript

那么要交互,必然二者要共存于一起,在android中如何打開一個頁面,比較常用的方法就是使用一個WebView控件,用它來加載網頁

交互也必然是雙方的,有來有往,下面分兩部分說明

PS:這里直接援引前面文章中的例子,稍作修改

1,android中調用js

那么首先得有js,不然怎么調用,所以html如下

<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> <script type="text/javascript">function javacalljs(){document.getElementById("content").innerHTML ="<br\>JAVA調用了JS的無參函數"; }function javacalljswith(arg){document.getElementById("content").innerHTML =("<br\>"+arg); } </script> </head> <body> HTML 內容顯示 <br/> <h1><div id="content">內容顯示</div></h1> </body> </html>

這里需注意的是,兩個方法的名稱需要與之后調用的名稱相同:javacalljs,javacalljswith

那么將它放入工程內,或是部署在服務器上,隨后在webView中加載這個url

這里只寫出webView加載該url的代碼

contentWebView = (WebView) findViewById(R.id.webview);// 啟用javascriptcontentWebView.getSettings().setJavaScriptEnabled(true);// 從assets目錄下面的加載htmlcontentWebView.loadUrl("file:///android_asset/web.html");

這里因為作者使用的是放入工程的方法,故而loadUrl方法內傳遞的是一個本地的相對地址

到這里webView加載網頁就完成了,那么如何使用webView調用其中的js呢

contentWebView.loadUrl("javascript:javacalljs()");

亦或者是

contentWebView.loadUrl("javascript:javacalljswith(" + "'http://blog.csdn.net/Leejizhou'" + ")");

兩者都是之前在html內定義過的js函數名,一個有參一個無參(這里為尊重援引博文的作者,參數內的博客地址就不修改了)

到這為之,android中調用js就完成了

那么交互交互,反過來,如何在html代碼內與android交互呢

修改一下html的代碼

<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> </head> <body> HTML 內容顯示 <br/> <h1><div id="content">內容顯示</div></h1> <br/> <input type="button" value="點擊調用java代碼" onclick="window.android.startFunction()" /> <br/> <input type="button" value="點擊調用java代碼并傳遞參數" onclick="window.android.startFunction('http://blog.csdn.net/Leejizhou')" /> </body> </html>

這里可以看到,正如學習android時,在xml頁面內寫onclick來綁定點擊方法一樣,html用的也是這種方法,只是不同的是這里面需要輸入的不止是一個方法名,而是window.變量名.方法名

方法名自不用說,至于什么是變量名,先看下面的代碼

首先webView的初始化要改成如下代碼

     contentWebView = (WebView) findViewById(R.id.webview);// 啟用javascriptcontentWebView.getSettings().setJavaScriptEnabled(true);// 從assets目錄下面的加載htmlcontentWebView.loadUrl("file:///android_asset/web.html");contentWebView.addJavascriptInterface(MainActivity.this,"android");

最后一行添加js接口的時候,后面的“android”就是之前說的變量名

那么再往下,就需要定義這個方法了

   //由于安全原因 targetSdkVersion>=17需要加 @JavascriptInterface //JS調用Android JAVA方法名和HTML中的按鈕 onclick后的別名后面的名字對應 @JavascriptInterfacepublic void startFunction(){runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,"show",3000).show();}});}@JavascriptInterfacepublic void startFunction(final String text){runOnUiThread(new Runnable() {@Overridepublic void run() {new AlertDialog.Builder(MainActivity.this).setMessage(text).show();}});}

做到這,js就可以調用本地android中的方法了,這就實現了交互的過程

當然這里的交互非常簡單,如果需求不一樣,還需要修改,例如調用js時使用evaluateJavascript()會使得網頁不刷新并且較為容易獲得返回值等等

這方面在這篇文章中講的很透徹,這里也直接引用

Android:你要的WebView與 JS 交互方式 都在這里了

?

轉載于:https://www.cnblogs.com/Qunter/p/7105683.html

總結

以上是生活随笔為你收集整理的android与js交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。