WebView 컨트롤 파일 다운로드

5544 단어
보통 웹뷰 렌더링 인터페이스에는 파일을 다운로드할 수 있는 링크가 있습니다. 이 링크를 클릭하면 다운로드를 시작하고 파일을 로컬에 저장해야 합니다.웹뷰에서 페이지의 파일을 다운로드하는 방법은 일반적으로 두 가지가 있습니다.
  • 스스로 하나의 라인을 통해 자바 IO 코드를 써서 파일을 다운로드하고 저장한다
  • 시스템download를 호출하는 모듈
  • 1. 첫 번째 다운로드

    //       
            mWebView.setDownloadListener(new DownloadListener() {
                @Override
                public void onDownloadStart(String url, String userAgent,
                        String contentDisposition, String mimetype,
                        long contentLength) {
                    URL = url;
                    //  ProgressDialog  
                    progressBar.show();
                    Thread loginThread = new Thread(new Runnable() {
                        @Override
                        public void run() {
                            InputStream in = null;
                            FileOutputStream fout = null;
                            //       ,    
                            downloadFile = new File(Environment
                                    .getExternalStorageDirectory().getPath()
                                    + DirName);
                            if (!downloadFile.exists()) {
                                downloadFile.mkdirs();
                            }
                            String FolderName = getFileName(URL);
    
                            if (Environment.getExternalStorageState().equals(
                                    Environment.MEDIA_MOUNTED)) {
    
                                sdFile = new File(downloadFile, FolderName);
    
                                if (sdFile.exists()) {
                                    if (progressBar.isShowing()) {
                                        progressBar.dismiss();
                                    }
                                    openFile(mContext, sdFile);
                                } else {
                                    try {
                                        // String[] mimetypeName =
                                        // FolderName.split(".");
                                        // String HouZui = "."
                                        // + mimetypeName[mimetypeName.length - 1];
                                        URL httpUrl = new URL(URL);
                                        HttpURLConnection conn = (HttpURLConnection) httpUrl
                                                .openConnection();
                                        conn.setDoInput(true);
                                        conn.setDoOutput(true);
                                        in = conn.getInputStream();
                                        FileLen = conn.getContentLength();//           
                                        if (Environment.getExternalStorageState()
                                                .equals(Environment.MEDIA_MOUNTED)) {
    
                                            sdFile = new File(downloadFile,
                                                    FolderName);
                                            fout = new FileOutputStream(sdFile);
                                        } else {
                                        }
                                        byte[] buffer = new byte[1024];
                                        int len;
                                        int DownLoadLen = 0;
                                        while ((len = in.read(buffer)) != -1) {
    
                                            fout.write(buffer, 0, len);
                                            // DownLoadLen += len;
                                            // progressBar.setProgress((int)((DownLoadLen
                                            // / FileLen) * 100));
                                        }
                                        if (progressBar.isShowing()) {
                                            progressBar.dismiss();
                                        }
                                        openFile(mContext, sdFile);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    } finally {
                                        if (progressBar.isShowing()) {
                                            progressBar.dismiss();
                                        }
                                        if (in != null) {
                                            try {
                                                in.close();
                                            } catch (IOException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                        if (fout != null) {
                                            try {
                                                fout.close();
                                            } catch (IOException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    });
                    loginThread.start();
                }
            });
    

    두 번째 다운로드 방법

    class MyDownloadListenter implements DownloadListener{
     
     @Override
     public void onDownloadStart(String url, String userAgent,
     String contentDisposition, String mimetype, long contentLength) {
     System.out.println("url ==== >" + url);
     //new HttpThread(url).start();
      
     Uri uri = Uri.parse(url);
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);
     startActivity(intent);
     }
      
     }
    

    좋은 웹페이지 즐겨찾기