private class DownloadTask extends AsyncTask<String, Void, Void> {
// 传递两个参数:URL 和 目标路径
private String url;
private String destPath;
@Override
protected void onPreExecute() {
// log.info("开始下载");
}
@Override
protected Void doInBackground(String... params) {
//log.debug("doInBackground. url:{}, dest:{}", params[0], params[1]);
url = params[0];
destPath = params[1];
OutputStream out = null;
HttpURLConnection urlConnection = null;
try {
URL url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("Accept-Encoding", "identity");
// urlConnection.setRequestProperty("User-Agent", " Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36");
// urlConnection.setConnectTimeout(15000);
// urlConnection.setReadTimeout(15000);
InputStream in = urlConnection.getInputStream();
out = new FileOutputStream(params[1]);
byte[] buffer = new byte[10 * 1024];
int len=0;
long totalSize = urlConnection.getContentLength();
System.out.println("--------------"+totalSize);
int sum = 0;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
sum+=len;
int progress = (int) ((sum*1.0f / totalSize)*100);
System.out.println("*******"+sum);
Message msg = mHandler.obtainMessage(1);
msg.arg1 = progress;
mHandler.sendMessage(msg);
Thread.sleep(50);
}
in.close();
} catch (IOException e) {
// log.warn(e);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
// log.warn(e);
}
}
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
// log.info("完成下载");
Intent handlerIntent = new Intent(Intent.ACTION_VIEW);
String mimeType = getMIMEType(url);
Uri uri = Uri.fromFile(new File(destPath));
// log.debug("mimiType:{}, uri:{}", mimeType, uri);
handlerIntent.setDataAndType(uri, mimeType);
startActivity(handlerIntent);
}
}
private String getMIMEType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
// log.debug("extension:{}", extension);
if (extension != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;
}
调用 new DownloadTask().execute(url, destPath);
android 下载文件
最新推荐文章于 2024-04-28 19:16:12 发布