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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android WebView 与 JS 交互

發布時間:2025/6/15 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android WebView 与 JS 交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?在android activity webView的使用,activity中執行html中的js 方法, 和在html 中 調用activity 中的java方法?

如圖 :?

上圖中 點擊了 ” 調用html中的js 方法“ ?后的 效果

上圖中 點擊了 ?html 中的 ”調用java中的方法“ ?后的 效果 這里是調用java 中的方法 彈出了一個 對話框

在android開發中 有的程序會使用webView調用外部的html 界面,有界面 就當然有交互。 嘻嘻?

注意點:

?AndroidManifest.xml中必須注冊"android.permission.INTERNET"進行權限許可,(如果只是使用本地HTML,可以不用注冊許可權限)否則會出Web page not available錯誤

webView的使用方式這里就不做介紹了. ?但需要注意的一點是 ,要使用js 必須開啟webView的js 支持, 否則webView是不支持js的喔

開啟WebView 的js方法

WebView webview=(WebView)findViewById(R.id.webview);//加上這句話才能使用javascript方法 ?? webview.getSettings().setJavaScriptEnabled(true);

首先我們 先看看 如何在在java中調用 html中的js 方法?

1: ?首先創建一個測試的html?

代碼如下?

<html><head><script type="text/javascript">function updateHtml(){document.getElementById("content").innerHTML = "你通過 android 中的控件調用了html 中js 的方法";}</script></head><body>this is my html <a onClick="window.login.startFunction()" href="";>調用java中個的方法</a><span id="content"></span></body> </html>

把上面代碼保存為 demo.html 放到android 項目下面assets目錄下面

上面的代碼中,包含了一個js 方法 ,我們接下來看看 如何在 activity中調用這個js 方法。 直接看代碼 :

布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"?><WebView?android:layout_weight="9"?android:id="@+id/webview" ?android:layout_width="fill_parent" ??android:layout_height="fill_parent" />?<Buttonandroid:layout_weight="1"android:id="@+id/button"android:layout_width="fill_parent"?android:layout_height="wrap_content"?android:text="調用html中的js 方法" />?<Buttonandroid:layout_weight="1"android:id="@+id/button1"android:layout_width="fill_parent"?android:layout_height="wrap_content"?android:text="重新加載html" />?</LinearLayout>

程序代碼

public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲取webView 控件final WebView webview=(WebView)findViewById(R.id.webview);//加上這句話才能使用javascript方法 ?webview.getSettings().setJavaScriptEnabled(true);//加載公網中的 html界面//webview.loadUrl("http://128.128.191.62/cn/mobile/geturl.html");//加載sdcard中的 html界面webview.loadUrl("file:///sdcard/demo.html");?//加載assets目錄下面的demo.html 界面webview.loadUrl("file:///android_asset/demo.html");Button button=(Button)findViewById(R.id.button); //獲取button控件 即"調用html中的js方法" 按鈕//給button添加事件響應,執行JavaScript的fillContent()方法 ?button.setOnClickListener(new Button.OnClickListener() { ?public void onClick(View v) {webview.loadUrl("javascript:updateHtml()"); ?}}); ?Button button1=(Button)findViewById(R.id.button1);//獲取button1控件 即"重新加載html "按鈕//給button添加事件響應,執行JavaScript的fillContent()方法 ?button1.setOnClickListener(new Button.OnClickListener() { ?public void onClick(View v) {Log.d("MainActivity","button1 OnClick");webview.loadUrl("http://www.163.com");?}});} }

上面代碼中 藍色部分代碼就是調用的 html中的js 方法 , 點擊?調用html中的js方法 ?按鈕會更新html內容。?

那反過來 又如何 在 html中調用java 里面的方法 呢 , 同樣好簡單的 , 我們看看下面的 代碼:

public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲取webView 控件final WebView webview=(WebView)findViewById(R.id.webview);//加上這句話才能使用javascript方法 ?webview.getSettings().setJavaScriptEnabled(true);//webview.loadUrl("http://128.128.191.62/cn/mobile/geturl.html");//加載assets目錄下面的demo.html 界面webview.loadUrl("file:///android_asset/demo.html");Button button=(Button)findViewById(R.id.button); //獲取button控件 即"調用html中的js方法" 按鈕//給button添加事件響應,執行JavaScript的fillContent()方法 ?button.setOnClickListener(new Button.OnClickListener() { ?public void onClick(View v) {Log.d("MainActivity","button OnClick");webview.loadUrl("javascript:showDialog()"); ?}}); ?Button button1=(Button)findViewById(R.id.button1);//獲取button1控件 即"重新加載html "按鈕//給button添加事件響應,執行JavaScript的fillContent()方法 ?button1.setOnClickListener(new Button.OnClickListener() { ?public void onClick(View v) {Log.d("MainActivity","button1 OnClick");webview.loadUrl("http://128.128.191.62/cn/mobile/geturl.html");?//return?}});//增加接口方法,讓html頁面調用 ? 第二個參數為別名,在html 中調用會使用webview.addJavascriptInterface(this,"login"); ?}public void startFunction(){AlertDialog.Builder ab=new AlertDialog.Builder(MainActivity.this);ab.setTitle("提示");ab.setMessage("通過js 調用了 java 中的方法");ab.setPositiveButton("確定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});ab.create().show();}}

上面藍色代碼部分 ?定義了java一個方法 并且在主線程中將本身的java 實例 添加到 webView 中去,這樣就可以在 在 html中 使用 window.login.startFunction()就可以在html 中調用java 中間的方法 。 ?

?趕快去試試吧 ,?代碼 下載地址

?

轉載于:https://my.oschina.net/JiangTun/blog/654700

總結

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

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