activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/but" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="78dp" android:onClick="callHtml" android:text="点击向HTML传值" /> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="300dp" android:layout_alignParentBottom="true"/> </RelativeLayout>
============
MainActivity.java
package com.example.webview_demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.webkit.JavascriptInterface; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.Toast; public class MainActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件ID webView = (WebView) findViewById(R.id.webview); //加载本地的网页 本地的路径 webView.loadUrl("file:///android_asset/javascript.html"); //是否支持JavaScrip webView.getSettings().setJavaScriptEnabled(true); //1.Javascrip 2.别名 webView.addJavascriptInterface(this, "android"); //回调弹框 webView.setWebChromeClient(new WebChromeClient()); } //1.点击Button调取HTML文件中的方法进行传值 public void callHtml(View v) { webView.loadUrl("javascript:getAndroidText('我来自android')"); } //2.定义一个接受html里的方法 @JavascriptInterface public void getHtml(String name) { Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show(); } }
===============
asset文件下的javascript.html
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <script type="text/javascript"> <!--定义接受Android的方法--> function getAndroidText(msg){ alert(msg); } <!--向Android进行传值--> function sendTextToAndroid(){ var name = document.getElementById("username").value; android.getHtml(name); } </script> </head> <body> <input type="text" id="username"></input> <input type="submit" onClick="sendTextToAndroid()" value="点击向Android传入值"></input> </body> </html>