Android中WebView使用5,js调java方法

来源:互联网 发布:mac移动桌面文件夹 编辑:程序博客网 时间:2024/06/06 17:08

效果图

项目结构

核心代码:

JsToJavaActivity中
package com.zhh.android;import android.app.Activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.Toast;/** * js调java * JavaAndJavaScriptCall.html */public class JsToJavaActivity extends Activity  {    private WebView wvNet;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_js_to_java);        findViews();        initWebView();    }    /**     * 初始化控件     */    private void findViews() {        wvNet = (WebView) findViewById(R.id.wvNet);    }    private void initWebView() {        WebSettings webSettings = wvNet.getSettings();        //设置支持javaScript脚步语言        webSettings.setJavaScriptEnabled(true);        //支持双击-前提是页面要支持才显示//        webSettings.setUseWideViewPort(true);        //支持缩放按钮-前提是页面要支持才显示        webSettings.setBuiltInZoomControls(true);        //设置客户端-不跳转到默认浏览器中        wvNet.setWebViewClient(new WebViewClient());//      js通过Android字段调用AndroidAndJsInterface中的任何方法//      js中的onclick="window.Android.showToast()"//      第二个参数传Android,//      showToast()对应AndroidAndJsInterface类中的方法名        wvNet.addJavascriptInterface(new AndroidAndJsInterface(), "Android");        //加载 assets下JavaAndJavaScriptCall.html        //网络连接也可以        wvNet.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");    }    class AndroidAndJsInterface {        /**         * 被js调用的方法         * js中的onclick="window.Android.showToast()"对应的方法名         *         */        @JavascriptInterface        public void showToast() {            Toast.makeText(JsToJavaActivity.this, "js调用Java成功", Toast.LENGTH_SHORT).show();        }    }}
activity_js_to_java.xml中
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    tools:context=".JavaToJSActivity"    android:orientation="vertical"    >    <WebView        android:id="@+id/wvNet"        android:layout_width="match_parent"        android:layout_height="match_parent">    </WebView></LinearLayout>
JavaAndJavaScriptCall.html中
<html><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <script type="text/javascript">function javaCallJs(){ document.getElementById("content").innerHTML +=            "<br\>java调用了js无参函数";}function javaCallJs(arg){ document.getElementById("content").innerHTML =         ("欢迎:"+arg );}   function showDialog(){      alert("谷粉们你好,我是来自javascript");   }    </script></head><body><div align="left" id="content"> 谷粉</div><div align="right">光临尚硅谷</div><p><img src="http://atguigu.com/images/logo.gif"></p><input type="button" value="js调java" onclick="window.Android.showToast()" /></body></html>
AndroidManifest.xml加权限
<uses-permission android:name="android.permission.INTERNET" />
注:例子演示的是本地的h5代码,链接也一样
源码下载:
http://download.csdn.net/download/zhaihaohao1/9980957






原创粉丝点击