在网上看啦一些,自己有修改了一下,主要方法 如下
下载类
package com.example.anrdroidlancher.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.content.Context;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.widget.Toast;/** * 下载apk *  * @author qishoudong * @2012-10-11 */public class LoadingUtile {public Context context;public Handler handler;/** * 文件一共的大小 */public static  int fileSize = 0;/** * 已经下载的大小 */public int downloadSize = 0;public static int loading_size;public static final int DOWNLOAD_PREPARE = 0;public static final int DOWNLOAD_WORK = 1;public static final int DOWNLOAD_OK = 2;public static final int DOWNLOAD_ERROR = 3;public LoadingUtile(Context context) {this.context = context;}public LoadingUtile(Context context, Handler handler) {this.context = context;this.handler = handler;}public final static String loadingFile = "thtf_apk";public static String FILEPATH = null;public File downLoadFile(String httpUrl) throws Exception {String[] tempStr = httpUrl.split(".");final String fileName = "ebank.apk";FileHelper fileHelper = new FileHelper(context);FILEPATH = fileHelper.sysPath(context) + loadingFile;File tmpFile = new File(FILEPATH);if (!tmpFile.exists()) {tmpFile.mkdir();}final File file = new File(FILEPATH + "/" + fileName);try {URL url = new URL(httpUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();FileOutputStream fos = new FileOutputStream(file);byte[] buf = new byte[256];conn.connect();fileSize=conn.getContentLength();if (fileSize < 1 || is == null) {sendMessage(DOWNLOAD_ERROR);} else {sendMessage(DOWNLOAD_PREPARE);byte[] bytes = new byte[1024];int len = -1;while ((len = is.read(bytes)) != -1) {fos.write(bytes, 0, len);downloadSize += len;loading_size=downloadSize;sendMessage(DOWNLOAD_WORK);}sendMessage(DOWNLOAD_OK);}conn.disconnect();fos.close();is.close();} catch (IOException e) {sendMessage(DOWNLOAD_ERROR);e.printStackTrace();}return file;}/** * 给hand发送消息 *  * @param what */private void sendMessage(int what) {Message m = new Message();m.what = what;handler.sendMessage(m);}}

progressDialog handler 事件
/** * handle */ Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// handler接收到消息后就会执行此方法switch (msg.what) {case LoadingUtile.DOWNLOAD_ERROR:progressDialog.setMessage("下载出错");progressDialog.dismiss();break;case LoadingUtile.DOWNLOAD_PREPARE://progressDialog.setMax(LoadingUtile.fileSize);break;case LoadingUtile.DOWNLOAD_WORK:int res = LoadingUtile.loading_size * 100 / LoadingUtile.fileSize;//progressDialog.setMessage("已经下载  "+res+"%");progressDialog.setProgress(res);break;case LoadingUtile.DOWNLOAD_OK:progressDialog.dismiss();// 关闭ProgressDialogopenFile(file);break;default:progressDialog.dismiss();// 关闭ProgressDialogbreak;}}};

更多相关文章

  1. XAMARIN Android获取WIFIMAC地址的方法
  2. 实时获取Android 各版本电量的统一方法
  3. 利用浏览器默认方法获取浏览器当前位置
  4. 【Android】实现Activity页面暂停几秒后跳转的两种方法
  5. android实现图片圆角化实现三种方法
  6. “android list targets 无target显示” 的解决方法。
  7. Android开发中获取本机Mac地址和IP地址的方法
  8. android 背景边框变圆角的几种方法
  9. Android Studio获取SHA1证书方法

随机推荐

  1. android内核介绍
  2. Android(安卓)更新UI的两种方法——handl
  3. Android(安卓)给控件添加边框阴影效果
  4. Android(安卓)onSaveInstanceState()和on
  5. 在android 输出log 信息 用于调试
  6. Eclipse混淆文件导入Android(安卓)Studio
  7. Android(安卓)AMS源码分析之结合AIDL分析
  8. Android(安卓)studio 使用com.android.su
  9. Android入门三之目录结构2
  10. android 连接服务器的方法及安全性问题