webview的使用大全

本文详述了Android WebView的各种使用场景,包括基本配置、安全设置及Java与JavaScript交互的三种方法,强调了addJavascriptInterface的安全隐患及解决办法,并提供了设置头部信息、文件访问权限、Cookie管理和动态显示网页标题的示例。
摘要由CSDN通过智能技术生成

前言:前段时间在和一个朋友沟通的时候说到了webview的java与js的交互,他的项目的实现方式是通过拦截网页地址也就是覆盖shouldOverrideUrlLoading方法的形式,而我是一直使用的是添加js接口也就是addJavascriptInterface的形式实现的,这时候突然想起来虽然一直在项目中使用webview,但是还没有好好写过webview使用的博客进行总结,所以有了今天的这篇文章。

概括:这篇文章内容主要是讲的我各种中遇见的关于webview使用的所有的情况和配置用法,有webview的基本配置,webview的安全的配置,webview里面java和js的交互 等等 各种技术的实现和示例。

好了,这就开始正文了。。

一:webview里面js与java的交互。

1.自定义重写WebViewClient类,用覆盖shouldOverrideUrlLoading方法的方式来实现。

public class ZhikeWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (isHttpUrl(url)){//如果是网页地址就直接加载网页
            ZhikeWebView webView = (ZhikeWebView) view;
            webView.loadUrl(url);
            return false;
        }
	//如果不是网页地址,就代表是前端和后台商量好的协议,可以在这里做拦截进行处理

        return true;
    }

    private boolean isHttpUrl(String url){
        return url.startsWith("http://") || url.startsWith("https://");
    }

}

 

在web中调用方式:

<button οnclick="window.open('www.example.com?body=loadurl')">showAndroidToast</button>

2.自定义重写WebChromeClient类,使用使用onJsAlert或者onJsPrompt的形式实现。

class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        Log.d("MyWebChromeClient", message);

        Toast.makeText(OnJsPromptActivity.this, message, Toast.LENGTH_SHORT).show();
        result.confirm();
        return true;
    }
    @Override
    public boolean onJsConfirm(WebView view, String url, String message,
                               JsResult result) {
        return super.onJsConfirm(view, url, message, result);
    }
    @Override
    public boolean onJsPrompt(WebView view, String url, String message,
                              String defaultValue, JsPromptResult result) {

        Toast.makeText(OnJsPromptActivity.this, message, Toast.LENGTH_SHORT).show();
        //return super.onJsPrompt(view, url, message, defaultValue, result); 
        result.confirm();
        return true;
    }
} 

请注意:在这里,nJsAlert,onJsPrompt分别对应JS中的alert和prompt。

在web中调用方式:

<button οnclick="showAndroidToast('Hello Android!');">showAndroidToast</button>

<script type="text/javascript">
   function showAndroidToast(toast) {
               prompt('js prompt');
   }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值