zoukankan      html  css  js  c++  java
  • 安卓Native和H5页面进行交互

    安卓Native和H5页面进行交互


      1、H5页面调用安卓Native界面
        1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用
            a)安卓写一个类,里面的方法需要用通过注解来表明是java接口的方法。

          eg:

    private  class WebInterface {
            @JavascriptInterface
            public void callFromJSBasicDataType(int x, float y, char c, boolean result) {
                String str = "-" + (x + 1) + "-" + (y + 1) + "-" + c + "-" + result;
                Log.e("tttt", "tttttt"+str);
            }
            @JavascriptInterface
            public void callAndroidMethod() {
                Log.e("tttt", "tttttt2");
            }
        }

         b)设置webView可以支持js
          eg:
              webView.getSettings().setJavaScriptEnabled(true);
             c)给webView添加js接口类,并取别名
              webView.addJavascriptInterface(new WebInterface(), "robot");
        
        至此,安卓的配置完成了。
        
          下面配置HTML页面
          在代码中添加下面的代码,如果加载了页面了,就会调用起别名叫robot这个接口类里面的js接口方法
        <p>
            <button onclick="robot.callFromJSBasicDataType(1,2,'a',true);">点击我调用android 方法</button>
        </p>

        2)通过设置webview的setWebViewClient。安卓通过url跳转时的改变,来进行不同的操作
    当webview加载的页面出现变化的时候,可以进行不同的操作,例如访问站外的网址,或者黑名单的网址进行提示
        eg:

    wb.setWebViewClient(new Custom());
        
        private class Custom extends WebViewClient{
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                Log.e("tttt", url);
                if (url.contains("bai")) {
                    Dialog d=new Dialog(MainActivity.this);
                    d.setTitle("ttttt");
                    d.show();
                    return true;
                }
                return false;
            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
            }
        }

      2、安卓Native界面调用H5方法
    主要就是通过webview的LoadUrl方法
    eg:
    webView.loadUrl("javascript:noParamFunction();");
    注:需要页面加载完成之后调用才有效。因为js脚本需要完全加载到页面中才可以调用到,否则没有任何效果

  • 相关阅读:
    #Leetcode# 204. Count Primes
    #Leetcode# 202. Happy Number
    #Leetcode# 8. String to Integer (atoi)
    VMWare(虚拟机) 网络配置模式 :桥接模式、nat模式、主机模式
    领域的建立
    需求获取的前期工作(不断更新)
    2.4文件查找与文件列表
    2.3录制并回放终端会话
    2命令之乐,2.1简介
    1.7比较与测试
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/5340267.html
Copyright © 2011-2022 走看看