webview与h5交互

android webview与H5的交互 方法无响应

@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" })
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();

        webView = (WebView) findViewById(R.id.webView);
        String url = getIntent().getStringExtra("urlPath");
        WebSettings webSettings = webView.getSettings();
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        // WebView加载web资源
        webView.loadUrl(url);
        // 从assets目录下面的加载html
        // webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        webView.addJavascriptInterface(this, "javatojs");
        webView.getSettings().setJavaScriptEnabled(true);

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onReceivedSslError(WebView view,
                    SslErrorHandler handler, SslError error) {
                // 重写此方法可以让webview处理https请求。
                super.onReceivedSslError(view, handler, error);
                handler.proceed();
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // 在页面加载开始时调用。
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                // 在页面加载结束时调用。
                super.onPageFinished(view, url);
            }

            @Override
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                // TODO Auto-generated method stub
                super.onReceivedError(view, errorCode, description, failingUrl);
                webView.setVisibility(View.GONE);
                // 返回
                ImageView backView = (ImageView) findViewById(R.id.iv_licaike_back);
                backView.setVisibility(View.VISIBLE);
                backView.setOnClickListener(WebViewActivity.this);
            }

            @Override
            public void onLoadResource(WebView view, String url) {
                // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
                super.onLoadResource(view, url);
            }

        });

        // 主要处理解析,渲染网页等浏览器做的事情 辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onReceivedTitle(WebView view, String title) {
                setTitle(title);
            }
        });

    }


@JavascriptInterface   // 这个最好每个H5调用都加,否则有些机型和版本不支持
    public void reqDataFromApp() {
        webView.loadUrl("javascript:getDataToH5('" + "toStr" + "')");
    }

html调用
javascript:javatojs.reqDataFromApp(); function getDataToH5(toStr){}

你可能感兴趣的:(android,WebView,android,文档,html,web,webview)