android WebView的使用,js与原生交互

Android中WebView的使用:
1.设置WebView的JavaScript可用

WebView main_mv = ((WebView) findViewById(R.id.main_wv));
main_mv.getSettings().setJavaScriptEnabled(true);

2.设置需要加载的Web url

main_mv.loadUrl(stringExtra);

3.android中加载URl默认是在手机的浏览器中加载,我们可以覆盖他的这个动作,达到使用WebView的加载方式

  //使用WebView的浏览器
       main_mv.setWebViewClient(new WebViewClient(){
           @Override
           public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
               view.loadUrl(stringExtra);
               return super.shouldOverrideUrlLoading(view, request);
           }

4.我们可以设置页面标题

 //设置页面标题
        main_mv.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onReceivedTitle(WebView view, String title) {
                Webview_TV.setText(title);
            }
        });

5.当WebView加载失败和断网的情况下,会调用以下方法,以达到我们想要的界面

 @Override//在加载WebView是断网或连接失败会调用次方法
           public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
               super.onReceivedError(view, errorCode, description, failingUrl);
               Log.e("发生错误","oooooooooooooo");
           }

6.使用WebView进行下载

 //设置下载监听
  main_mv.setDownloadListener(new MyDownload());
    //WebView下载监听的类
    public class MyDownload implements DownloadListener{

        @Override
        public void onDownloadStart(String s, String s1, String s2, String s3, long l) {
            Log.e("此类可以监听到需要下载的网址",s);
        //开启线程进行下载
               new HttpThread(s).start();

            //调用手机自带下载
//            Uri uri = Uri.parse(s);
//            Intent intent = new Intent(Intent.ACTION_VIEW,uri);
//            startActivity(intent);
        }
    }

7.调用下载的类

/**
 * Created by 常城 on 2016/11/26.
 */
public class HttpThread extends Thread {
    private String urls;
    public HttpThread(String url){
        this.urls = url;
    }

    @Override
    public void run() {
        try {
            Log.e("下载开始","--------------");
            URL url = new URL(urls);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true);
            conn.setDoOutput(true);

            InputStream inputStream = null;
            FileOutputStream fileOutputStream = null;


            if (conn.getResponseCode() == conn.HTTP_OK){
                inputStream = conn.getInputStream();

                if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                    File extern= Environment.getExternalStorageDirectory();
                    File file = new File(extern,"test.apk");
                    fileOutputStream = new FileOutputStream(file);
                }

                byte[] b = new byte[6*1024];
                int len;

                while ((len = inputStream.read(b)) != -1){
                    if (fileOutputStream != null){
                        fileOutputStream.write(b,0,len);
                    }
                }

            }
            if (fileOutputStream != null){
                fileOutputStream.close();
            }

            if (inputStream != null){
                inputStream.close();
                Log.e("下载结束","------");
            }
            Log.e("下载结束","=======");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Android与js互相调用

1.Android调用js

//android代码
//调用js方法
 main_mv.loadUrl("javascript:javaCallJs()");


//js代码
<!--此方法被Android调用-->
    function javaCallJs(){
         alert(123);
    }

2.js调用Android代码

//Android中代码
 //绑定js接口
        main_mv.addJavascriptInterface(new JsBrige(),"JsBrige");

//该类封装了js调用的方法
    public class JsBrige{
        @JavascriptInterface
        public void init(String a){
            Toast.makeText(WebViewActivity.this,a,Toast.LENGTH_LONG).show();
        }
    }

//js代码

<body>
    <!--引入mui框架-->
    <!--
        作者:330860504@qq.com
        时间:2016-11-26
        描述:
   -->
    <input type="button" value="调用java方法" onclick="show()" />

    <script type="text/javascript" charset="utf-8">
        mui.init();

        <!--此方法被Android调用-->
        function javaCallJs(){
         alert(123);
        }

        function show(){
            <!--调用Android中的方法-->
            JsBrige.init("123");
        }       
   </script> 
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值