WebView的简单使用及和js的交互

WebView调用浏览器的方式
1.加载本地html:
webview.loadUrl(“file:///android_asset/index.html”);
注意:本地index.html要放到assets根目录下,在android studio 下这个跟目录是需要自己建立的,路径是:xxx\src\main\下,否则运行时找不到这个html文件
2.加载网络html:
webview.loadUrl(“http://www.baidu.com“);
3.加载SDCard下html:
webview.loadUrl(“file:///adcard/index.html”);
关于webview和js的交互:
1.java调用js中的代码:
需要开启:
webview.getSetting().setJavaScriptEnabled(true);
然后直接通过loadUrl()方法调用即可.
webview.loadUrl(“javascript:javatojs()”);
参数:javascript是前缀,冒号后面跟js中要调用的方法。
2.js中调用java代码:
需要添加java中事先已经给写好的接口:
webview.addJavascriptInterface(this,”androidtojs”);
第一个参数是个objcet类型,这里我传了一个当前的类对象,方便调用整个类下面的方法,后面第二个参数是第一个参数的别称,方便在js中识别,相当于一个身份标示。
注:不知为啥,我用api:17(Android 4.2)真机调试,Android studio中一直有个错误的下划线,提示当前版本不支持该方法,但运行起来没问题。
然后就是js中调用java代码了

<a href="" onClick="window.androidtojs.test()">调用安卓中的方法</a>

“androidtojs”参数看出啥作用了吧,代表java中的当前类,调用该类下的test方法。

贴一下完整代码:

public class Fragement1 extends Fragment {
    private WebView mywebview;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootview=inflater.inflate(R.layout.fragment_main2,container,false);
        //webview控件
        mywebview=(WebView)rootview.findViewById(R.id.mywebview);
        mywebview.loadUrl("file:///android_asset/index.html");
        //开启可以调用js中的方法
        mywebview.getSettings().setJavaScriptEnabled(true);
        mywebview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                //返回值为true则用webview打开,为false则用第三方浏览器打开
                return true;
            }
        });

        Button bt_change=(Button)rootview.findViewById(R.id.bt_change);
            bt_change.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mywebview.loadUrl("javascript:javatojs()");
                }
            });
        //开启安卓接口调用方法
        mywebview.addJavascriptInterface(this,"androidtojs");
        return rootview;
    }
    public void test()
    {
        Toast.makeText(getActivity(), "js调用安卓中方法", Toast.LENGTH_SHORT).show();
    }
}

js代码:

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script type="text/javascript">
   function javatojs()
   {
       document.getElementById("content").innerHTML="java调用js中的方法";
   }
  </script>
 </head>
 <body>
  <span id="content"></span>
   <a href="" onClick="window.androidtojs.test()">调用java中的方法</a>
 </body>
</html>

好了,第一次发csdn的微博,知识点不多,暂且写这些。
转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值