Android 之webview加载html 和js做交互

导读:本篇文章讲解 Android 之webview加载html 和js做交互,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

话不多说:先撸一个html:名字叫index.html,这个html放到哪里,大家应该都知道吧,哈哈!!!!


<!DOCTYPE html>

<script type="text/javascript">
function buttonClick(){
        var u = navigator.userAgent, app = navigator.appVersion;
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
        var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if (isAndroid) {
        window.object.back();
        } else if(isIOS) {
            iback();
        }
}
</script>

<html lang="en">

    <head>

         <meta charset="utf-8">

          <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      

            <meta name="description" content="">  

            <meta name="viewport" content="width=device-width; initial-scale=1.0">


      </head>  

    <button id="hallo" onclick="buttonClick()"> 点击button</button>  

    </body>  

</html>  

注意下面这段代码:在html中有这样一段代码:它是用来标识android 和ios交互事件

 var u = navigator.userAgent, app = navigator.appVersion;
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
        var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        if (isAndroid) {
        window.object.back();
        } else if(isIOS) {
            iback();
        }

Maintivity:

package com.example.jsandroiddemo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
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);
        webview=(WebView) findViewById(R.id.webview);
        webview.getSettings().setBuiltInZoomControls(true); //显示放大缩小 controler
        webview.getSettings().setSupportZoom(true); //可以缩放
            //屏幕自适应
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setLoadWithOverviewMode(true);
        //加载本地html
        webview.loadUrl("file:///android_asset/index.html");
        webview.getSettings().setJavaScriptEnabled(true);
         //js和android做交互
        webview.addJavascriptInterface(new Object(), "object");

        webview.setWebChromeClient(new WebChromeClient());

        webview.setWebViewClient(new WebViewClient() {


            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//                super.onReceivedSslError(view, handler, error);
                // TODO Auto-generated method stub
                //允许https://的访问
                //Android使用WebView加载https地址打不开的问题  小米
                handler.proceed();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                //加载完成
//                Toast.makeText(WebActivity.this, "加载完成", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                //加载开始
//                Toast.makeText(WebActivity.this, "加载开始", Toast.LENGTH_SHORT).show();
            }

           @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            // TODO Auto-generated method stub
            super.onReceivedError(view, errorCode, description, failingUrl);
            //加载失败
//          Toast.makeText(WebActivity.this, "加载失败", Toast.LENGTH_SHORT).show();
        }
        });

    }

    public class Object{
        //写一个js调android的方法
        //Android 4.2以上系统,通过在Java的远程方法上面声明
        // @JavascriptInterface可以解决WebView漏洞。如下面代码:
         //@JavascriptInterface一定的加上
        @JavascriptInterface
        public void back(){
            Toast.makeText(MainActivity.this, "回调成功啦。。。", 1).show();
        }

    }

}

网络访问权限:网络访问权限:网络访问权限:重要事说三遍

  <uses-permission android:name="android.permission.INTERNET" />

效果图:源码就不附上了,直接copy就可以的。。。。
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/12854.html

(0)

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!