欢迎光临散文网 会员登陆 & 注册

android studio WebView的常用方法,包含网页端调用java,java调用网页,网页注入介绍

2023-06-13 15:02 作者:翼618  | 我要投稿

跳到APP上的浏览器上加载,就是跳出到APP外部加载


java代码部分(可以放在onCreate下)

webView = (WebView) findViewById(R.id.wv_main);

//WebView加载web资源

webView.loadUrl("http://baidu.com");//需要加载的网页

WebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);


xml 内容(只要ID对的上,其他随便调)

<WebView

    android:id="@+id/wv_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:layout_centerHorizontal="true"

    android:layout_centerVertical="true" />

-----------------------------分割线--------------------------------------------

在app内部页面加载

(可以直接把    initWebView()   放在onCreate下)

private void initWebView(){

webView = (WebView) findViewById(R.id.wv_main);

WebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);

//WebView加载web资源

webView.loadUrl("http://baidu.com");

//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开

webView.setWebViewClient(new WebViewClient(){

   @Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

    // TODO Auto-generated method stub

       //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器

     view.loadUrl(url);

    return true;

}});}


-----------------------------分割线--------------------------------------------

这里写的是一个 网页加载完毕后 

将网页上一个id 为 MyName的 模块 隐藏掉 的示例参考代码


具体看 loadUrl里面执行的代码  有些设置记得要配置 否则会无效 而且不报错

重点是添加加载完后,往网页添加一个myFunction并且执行他,并且拿到对应模块的ElementById才能执行有效,否则JS找不到对应ID函数执行无效,这一块可以跟网页端协商添加一个ID


 @Override

    public void onActivityCreated(Bundle savedInstanceState) {

        setListener();

        webSettings = webview.getSettings();

        webSettings.setJavaScriptEnabled(true);

        webSettings.setUseWideViewPort(true);

        webSettings.setLoadWithOverviewMode(true);

        webview.setWebViewClient(new MyWebViewClient());


        webview.setWebViewClient(new WebViewClient() {

            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

                return true;

            }

        });

        // 启用javascript

        webview.getSettings().setJavaScriptEnabled(true);

        webview.setWebViewClient(new WebClineView() {  //网页加载完毕后 回调

            @Override

            public void onPageFinished(WebView view, String url) {

                super.onPageFinished(view, url);

                webview.loadUrl("javascript:function myFunction(){

              x=document.getElementById(\"ElementById\").style.display=\"none\";}"); //把这个js加载进网页

               

                webview.loadUrl("javascript:myFunction()");//执行这个方法


                Log.d("Tab1", webview.getUrl());

            }

        });

        super.onActivityCreated(savedInstanceState);

    } 

-----------------------------分割线--------------------------------------------

JS调用Java方法(网页端调用java方面的代码)


这里给出了网页端和java的代码,核心也就是相互调用

要用的话直接娶对应的方法函数就好,留意名字ID对上一般问题不大,换成线上网页也可以,如果害怕出现沟通上的问题,可以按照如下配置在APP端自行调试后,再和网页端沟通


网页内容

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>标题设置</title>


    <script>

         function callAndroid(){

        // 由于对象映射,所以调用test对象等于调用Android映射的对象

            test.hello("js调用了android中的hello方法");

         }

      </script>

</head>


<body>

//点击按钮则调用callAndroid函数

<button type="button" id="button1" onclick="callAndroid()"></button>


</body>

</html>



java内容


    /** 可以内部类 做操作 搞不懂就直接新建一个就好了 */

public class AndroidtoJs extends Object {


    // 定义JS需要调用的方法

    // 被JS调用的方法必须加入@JavascriptInterface注解

    @JavascriptInterface

    public void hello(String msg) {

        System.out.println("JS调用了Android的hello方法");

    }

}



webview设置


    private void setWebView(){

        webView = (WebView) findViewById(R.id.wv_main);

        WebSettings webSettings = webView.getSettings();


        // 设置与Js交互的权限

        webSettings.setJavaScriptEnabled(true); 


        // 通过addJavascriptInterface()将Java对象映射到JS对象

        //参数1:Javascript对象名

        //参数2:Java对象名

        webView.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS类对象映射到js的test对象

        // 加载JS代码

        // 格式规定为:file:///android_asset/文件名.html.

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

    }




-----------------------------分割线--------------------------------------------

HTML 另外一种调用方法

直接用HTML的样式使用


Html.fromHtml("<font col or=#333333 >" + "题目快速导航:" + "</font>"  +

                "<font color=#03a9f4 >" +"(共"+ requestData.size() +"题)"+ "</font>")


android studio WebView的常用方法,包含网页端调用java,java调用网页,网页注入介绍的评论 (共 条)

分享到微博请遵守国家法律