WebView 파일 다운로드
이 섹션 소개
이 섹션에서는 UC와 같은 일반 브라우저를 사용할 때 WebView 파일 다운로드에 대한 지식 포인트를 소개합니다. 다운로드 링크를 클릭하면 브라우저와 유사한 구성 요소인 WebView가 다운로드됩니다. 물론 다운로드도 지원됩니다. 다운로드 프로세스를 직접 작성하고 다운로드한 파일을 저장할 위치와 사용할 파일 이름을 설정할 수 있습니다. 저장은 물론 Chrome, UC 등 다른 내장 브라우저를 호출하여 다운로드할 수도 있습니다! 어떻게 사용하는지 보여드리겠습니다!
1. 다른 브라우저를 호출하여 파일을 다운로드하세요.
이것은 매우 간단합니다. WebView에 대해 setDownloadListener를 설정한 다음 DownloadListener를 다시 작성하면 됩니다. onDownloadStart를 입력하고 그 안에 인텐트를 작성한 다음 Activity에 해당하는 Activity를 시작하세요!
키 코드는 다음과 같습니다:
wView.setDownloadListener(new DownloadListener(){ @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Log.e("HEHE","开始下载"); Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } });
휴대폰에 여러 브라우저가 있는 경우 다운로드할 브라우저 중 하나를 선택할 수 있는 대화 상자가 열립니다~
2. download the file
물론, 다운로드한 파일을 기본 경로에 넣지 않을 수도 있고, 파일 이름을 직접 정의할 수도 있습니다. 직접 작성해도 됩니다. 파일을 다운로드하는 스레드, 구현 예제 코드는 다음과 같습니다.
핵심 코드:
우리는 다른 다운로드 스레드 클래스를 직접 작성합니다.
DownLoadThread.java
/** * Created by Jay on 2015/9/14 0014. */ public class DownLoadThread implements Runnable { private String dlUrl; public DownLoadThread(String dlUrl) { this.dlUrl = dlUrl; } @Override public void run() { Log.e("HEHE", "开始下载~~~~~"); InputStream in = null; FileOutputStream fout = null; try { URL httpUrl = new URL(dlUrl); HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); in = conn.getInputStream(); File downloadFile, sdFile; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Log.e("HEHE","SD卡可写"); downloadFile = Environment.getExternalStorageDirectory(); sdFile = new File(downloadFile, "csdn_client.apk"); fout = new FileOutputStream(sdFile); }else{ Log.e("HEHE","SD卡不存在或者不可读写"); } byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { fout.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (fout != null) { try { fout.close(); } catch (IOException e) { e.printStackTrace(); } } } Log.e("HEHE", "下载完毕~~~~"); } }
그런 다음 이 스레드를 만들고 시작합니다. wView.setDownloadListener(new DownloadListener(){
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition,
String mimetype, long contentLength) {
Log.e("HEHE","onDownloadStart被调用:下载链接:" + url);
new Thread(new DownLoadThread(url)).start();
}
});
:
SD 카드를 열면 다운로드한 파일이 SD 카드에 조용히 누워 있는 것을 볼 수 있습니다:
Notes:알겠습니다. SD 카드의 읽기 및 쓰기 권한과 네트워크에 대한 인터넷 액세스 권한을 작성하는 것을 잊지 마세요:
또한
in = conn.getInputStream();은 conn이 모든 것을 설정한 후에 작성해야 합니다. ! 그렇지 않으면 아무것도 읽을 수 없다는 점을 기억하십시오!
이 섹션 요약:이 섹션은 매우 간단하며 코드는 게시되지 않습니다. 실제로는 setDownloadListener이므로 직접 다시 작성하세요. onDownloadStart 메서드는 다운로드 프로세스를 처리하는 데 사용됩니다~, 이번 섹션은 여기까지입니다. 감사합니다~