美文网首页
Android与Js的方方面面

Android与Js的方方面面

作者: jamin_ | 来源:发表于2020-03-04 19:20 被阅读0次

    喜欢用第三方库的

    https://juejin.im/entry/5942688efe88c2006a58d709
    JsBridge库

    https://juejin.im/post/5ac044a8518825557459d603
    android与js的交互之jsbridge使用


    https://blog.csdn.net/u013095264/article/details/96300079
    JsBridge使用中的各种坑

    转移到另一个库!
    https://github.com/wendux/DSBridge-Android

    使用方法
    https://blog.csdn.net/jifenglie/article/details/100031244

    http://www.imooc.com/article/258978
    原生Js交互之DSBridge

    自己撸代码的,参考以下(含demo)

    https://juejin.im/post/592e15742f301e00570eb954

    加载本地网页

    webView.loadUrl("file:///android_asset/javascript.html");

    总结下:

    Android通过WebView调用 JS 代码

    对于Android调用JS代码的方法有2种:
    通过WebView的loadUrl()
    通过WebView的evaluateJavascript() --要Android4.4以上

    使用建议:
    两种方法混合使用,即Android 4.4以下使用方法1,Android 4.4以上方法2

    JS通过WebView调用 Android 代码

    对于JS调用Android代码的方法有3种:

    1、通过WebView的addJavascriptInterface()进行对象映射 --缺点:存在严重的漏洞问题
    2、通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url
    3、通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息

    三种方式的对比 & 使用场景


    image.png

    实践

    不让WebView调用系统自带浏览器

    重写setWebViewClient

     //不调用系统浏览器,在webview内跳转
     dbWebView.setWebViewClient(new WebViewClient(){
         @Override
         public boolean shouldOverrideUrlLoading(WebView webView, String s) {
             webView.loadUrl(s);
             return true;
         }
     });
    
    

    返回键起到回退的作用,不是返回activity!

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
                mWebView.goBack();// 返回前一个页面
                return true;
            }
            return super.onKeyDown(keyCode, event);
    

    相关文章

      网友评论

          本文标题:Android与Js的方方面面

          本文链接:https://www.haomeiwen.com/subject/mfxilhtx.html