美文网首页
Android与JS交互

Android与JS交互

作者: 米花噗噗 | 来源:发表于2019-07-15 01:41 被阅读0次

 之前项目做过一些Android和Html5之间js交互方面的东西,今天有时间就总结一下:
     一、为什么要进行js交互:

                 为了方便原生开发和Html之间数据传递,在静态页面的情况下可以改变原生开发的页面;

     二、如何进行js交互:

    (一)Android端调用H5页面

        在Android端主要使用WebView来进行网页的加载,设置属性

// 获取WebSetting对象

WebSettings webSettings = webview.getSettings();

// 设置支持javascript

webSettings.setJavaScriptEnabled(true);

// 将Android里面定义的类对象AndroidJs暴露给javascript

webview.addJavascriptInterface(newAndroidJs(MainActivity.this),"AndroidJs");

  调用方式:其中doAlert为H5页面的方法

webview.loadUrl("javascript:doAlert()");

对传递的url进行拦截:

bannerWeb.setWebViewClient(new WebViewClient() {

@Override

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

   //拦截url

        if (url.startsWith("weixin:") || url.startsWith("alipay") || url.startsWith("alipays")) {

try {

            startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));

            }catch (Exception e) {

            e.printStackTrace();

         }

            return true;

        }

return false;

    }

//传递session

    @Override

    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        String session = SharedPrefrenceUtils.getString(BannerActivity.this, NormalConfig.SESSION, "");

        synCookies(url, session);

        super.onPageStarted(view, url +"?cn=" + ChannelNumber.channelNumber, favicon);

    }

@Override

    public void onPageFinished(WebView view, String url) {

            super.onPageFinished(view, url);

    }

});

拿到cookies

public void synCookies(String url, String cookie) {

try {

CookieManager cookieManager = CookieManager.getInstance();

        //cookies是在HttpClient中获得的cooki

        cookieManager.setCookie(url, cookie);

        cookieManager.flush();

    }catch (Exception e) {

e.printStackTrace();

    }

}

相关文章

网友评论

      本文标题:Android与JS交互

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