原生+JS交互

在这里插入图片描述

  1. 第一个页面的效果 点击图片 跳转到第二个页面 长按图片 跳转到第三个页面

      WebView wv=findViewById(R.id.wv);
    //设置webview支持JS交互
    wv.getSettings().setJavaScriptEnabled(true);
    //加载页面
    wv.loadUrl("file:///android_asset/infos.html");
    
    //设置弹出alter
    wv.setWebChromeClient(new WebChromeClient()
    {
        @Override
        public void onReceivedTitle(WebView view, String title) {
            Log.i("xxx",view.getTitle());
            super.onReceivedTitle(view, title);
        }
    
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            return false;
        }
    
        @Override
        public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
            return super.onJsPrompt(view, url, message, defaultValue, result);
    
        }
    
        @Override
        public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
            callback.invoke(origin,true,false);
            super.onGeolocationPermissionsShowPrompt(origin, callback);
        }
    });
    wv.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl("url");
            return  true;
        }
    });
    //js调用的方法
    wv.addJavascriptInterface(this,"android");
    

    }
    @JavascriptInterface
    public void showUserInfo(String name,String pwd)
    {
    Toast.makeText(this,name+""+pwd,Toast.LENGTH_SHORT).show();;

    }

第二个页面
在这里插入图片描述
第二个页面的代码

 WebView wv=findViewById(R.id.wv);
        //设置webview支持JS交互
        wv.getSettings().setJavaScriptEnabled(true);
        //加载页面
        wv.loadUrl("file:///android_asset/infos.html");

        //设置弹出alter
        wv.setWebChromeClient(new WebChromeClient()
        {
            @Override
            public void onReceivedTitle(WebView view, String title) {
                Log.i("xxx",view.getTitle());
                super.onReceivedTitle(view, title);
            }

            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                return false;
            }

            @Override
            public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
                return super.onJsPrompt(view, url, message, defaultValue, result);

            }

            @Override
            public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                callback.invoke(origin,true,false);
                super.onGeolocationPermissionsShowPrompt(origin, callback);
            }
        });
        wv.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl("url");
                return  true;
            }
        });
        //js调用的方法
        wv.addJavascriptInterface(this,"android");

    }
    @JavascriptInterface
    public void showUserInfo(String name,String pwd)
    {
        Toast.makeText(this,name+""+pwd,Toast.LENGTH_SHORT).show();;

    }
}

第三个页面

在这里插入图片描述

第三个页面的代码

 webView = findViewById(R.id.wv);
        //得到webSetting
        WebSettings settings = webView.getSettings();
        //加载页面之前设置支持js交互
        settings.setJavaScriptEnabled(true);
        //第一种加载本地html页面
        webView.loadUrl("file:///android_asset/newsinfo.html");
        /*
        * android调用js方法
        *
        * */
        webView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                webView.loadUrl("javascript:test1()");
                return false;
            }
        });
        /*
        * js调用android方法
        * 第一步社会支持js调用android方法
        * */
        webView.addJavascriptInterface(this,"android");

        webView.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        webView.setWebChromeClient(new WebChromeClient()
        {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
            }
        });
    }
     //定义一个android方法
    @JavascriptInterface
    public  void toastMassage()
    {
        Toast.makeText(this,"js调用android方法了",Toast.LENGTH_SHORT).show();;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44329686/article/details/88092987
今日推荐