Android 는 WebView 를 사용 하여 파일 다운로드 기능 을 실현 합 니 다.
이 절 머리말
이 절 은 WebView 에서 파일 을 다운로드 하 는 지식 을 소개 합 니 다.저희 가 일반 브 라 우 저 를 사용 할 때,예 를 들 어 UC,다운로드 가능 한 링크 를 클릭 하면 다운 로드 를 합 니 다.WebView 는 브 라 우 저 와 같은 구성 요소 로 서 다운 로드 를 지원 합 니 다.저 희 는 다운로드 절 차 를 직접 작성 하고 다운로드 한 파일 을 어디 에 두 는 지 설정 할 수 있 습 니 다.어떤 파일 이름 으로 저장 하 는 지,물론 다른 내 장 된 브 라 우 저 를 사용 하여 다운로드 할 수 있 습 니 다.예 를 들 어 Chrome,UC 등!다음은 사용법 을 보 여 드 리 겠 습 니 다!
1.다른 브 라 우 저 로 파일 다운로드:
이것 은 매우 간단 합 니 다.우 리 는 WebView 에 setDownloadListener 를 설정 한 다음 에 DownloadListener 의 onDownloadStart 를 다시 쓰 고 그 안에 Intent 를 쓰 고 startActivity 에 대응 하 는 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.스 레 드 로 파일 다운로드
물론 다운로드 파일 을 기본 경로 에 두 고 싶 지 않 거나 파일 이름 을 정의 하고 싶 지 않 을 수도 있 습 니 다.직접 스 레 드 를 써 서 파일 을 다운로드 할 수 있 습 니 다.예제 코드 는 다음 과 같 습 니 다.
핵심 코드:
우 리 는 다운로드 한 스 레 드 종 류 를 따로 씁 니 다.
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", " ~~~~");
}
}
그리고 MainActivity.java 에서 이 라인 을 만 들 고 시작 합 니 다:
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 카드 에 조용히 누 워 있 는 것 을 볼 수 있다.
주의사항:
알 겠 습 니 다.또한 SD 카드 를 쓰 는 읽 기와 쓰기 권한 과 인터넷 액세스 권한 을 잊 지 마 세 요.
<uses-permission android:name="android.permission.INTERNET"/>
<!-- SDCard -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- SDCard -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
그리고,in=conn.getInputStream();conn 이 모든 것 을 설정 한 뒤에 써 야 합 니 다!!명심 해라,그렇지 않 으 면 아무것도 읽 을 수 없다!이 절의 소결:
이 절 은 매우 간단 합 니 다.코드 는 붙 이지 않 습 니 다.사실은 set DownloadListener 라 는 게임 입 니 다.직접 on DownloadStart 방법 을 다시 써 서 다운로드 과정 을 처리 할 뿐 입 니 다.이 절 은 여기까지 입 니 다.감사합니다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.