目標: 在android activity webView的使用,activity中執行html中的js 方法, 和在html 中 調用activity 中的java方法 javascript
如圖 : php
上圖中 點擊了 」 調用html中的js 方法「 後的 效果html
上圖中 點擊了 html 中的 」調用java中的方法「 後的 效果 這裏是調用java 中的方法 彈出了一個 對話框java
在android開發中 有的程序會使用webView調用外部的html 界面,有界面 就固然有交互。 嘻嘻 android
注意點:web
AndroidManifest.xml中必須註冊"android.permission.INTERNET"進行權限許可,(若是隻是使用本地HTML,能夠不用註冊許可權限)不然會出Web page not available錯誤ide
webView的使用方式這裏就不作介紹了. 但須要注意的一點是 ,要使用js 必須開啓webView的js 支持, 不然webView是不支持js的喔佈局
開啓WebView 的js方法測試
WebView webview=(WebView)findViewById(R.id.webview);ui
//加上這句話才能使用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"
/>
<Button
android:layout_weight="1"
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="調用html中的js 方法"
/>
<Button
android: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. */
@Override
public 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. */
@Override
public 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()
{
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
ab.create().show();
}
}
上面藍色代碼部分 定義了java一個方法 而且在主線程中將自己的java 實例 添加到 webView 中去,這樣就能夠在 在 html中 使用 window.login.startFunction()就能夠在html 中調用java 中間的方法 。
趕快去試試吧 。
https://blog.51cto.com/ext/down_att.php?aid=35928&code=0219 代碼 下載地址