android webview 真正实现---保存整个网页源码

来源:互联网 发布:修改软件的版本号 编辑:程序博客网 时间:2024/06/05 15:36

webview部分:  

         

        webView = (WebView) findViewById(R.id.webview);        WebSettings webSettings = webView.getSettings();        webSettings.setJavaScriptEnabled(true);        webView.addJavascriptInterface(new JsInterface(), "JsInterface");        webView.loadUrl("view-source:https://www.baidu.com/");        webView.setWebViewClient(new WebViewClient(){            @Override            public void onPageFinished(WebView view, String url) {                super.onPageFinished(view, url);                Log.i(TAG,"onPageFinished=="+url);                String js="document.execCommand('selectall');"+                        "var txt;" +                        "if (window.getSelection) {" +                        "txt = window.getSelection().toString();" +                        "} else if (window.document.getSelection) {" +                        "txt = window.document.getSelection().toString();" +                        "} else if (window.document.selection) {" +                        "txt = window.document.selection.createRange().text;" +                        "}"+                        "var charactersets = document.characterSet;"+                        "JsInterface.getHtmlSource(txt,charactersets);";                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {                    webView.evaluateJavascript("javascript:" + js, null);                    Log.i(TAG, "evaluateJavascript-javascript");                } else {                    webView.loadUrl("javascript:" + js);                    Log.i(TAG, "loadUrl-javascript");                }            }        });    }

js回调:

   

    class JsInterface{        @JavascriptInterface        public void getHtmlSource(String html,String charactersets){            Log.i(TAG,"getHtmlSource=="+html);            mHtml=html;            mCharactersets=charactersets;            mHandler.sendEmptyMessage(100);        }    }    private Handler mHandler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            saveHtml(mHtml,mCharactersets);        }    };

保存到本地:

   

    public boolean saveHtml(String html,String charactersets) {        System.out.println("SaveHtml======================");        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");        String name=simpleDateFormat.format(new Date())+".html";        File file =new File(Environment.getExternalStorageDirectory()+File.separator+Environment.DIRECTORY_DOWNLOADS+File.separator+name);        try {            if(file.exists()){                file.delete();            }            file.createNewFile();        } catch (IOException e) {            e.printStackTrace();        }        try {            Writer out = null;            out = new OutputStreamWriter(new FileOutputStream(file.getAbsolutePath(), false), charactersets);            out.write(html);            out.close();            Log.i(TAG,"saveHtml=="+file.getAbsolutePath());        } catch (Exception e) {            return false;        }        return true;    }

这个功能花了一周时间,心累!


原创粉丝点击