/** 下载apk */
class DownloadThread extends Thread {
@Override
public void run() {
Log.v(TAG, "开始下载...");
InputStream is = null;
FileOutputStream fos = null;
try {
URL url = new URL(mDownloadUrl);
Log.d("TAG", "downloadUrl = " + mDownloadUrl);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.connect();
int length = conn.getContentLength();
Log.v(TAG, "apksize:" + length);
is = conn.getInputStream();
fos = new FileOutputStream(apkPath);
int count = 0;
byte[] buf = new byte[1024];
while (mInterceptFlag) {
int numread = is.read(buf);
count += numread;
if (numread <= 0) {
mHandler.sendEmptyMessage(DOWN_OVER);
break;
}
mProgress = (int) (((float) count / length) * 100);
mHandler.sendEmptyMessage(DOWN_UPDATE);
fos.write(buf, 0, numread);
}
fos.flush();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
Log.e("AutoUpdate", " ============== Apk File not find");
} finally {
try {
if (fos != null) {
fos.close();
}
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 安装apk
*/
private void installApk() {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(apkPath);
intent.setDataAndType(Uri.fromFile(file),
"applicationnd.android.package-archive");
mContext.startActivity(intent);
file.deleteOnExit();
// 安装新的apk版本时,把缓存删掉
File cacheFile = new File(FileUtils.getSDCardPath()
+ "/Android/data/com.sinllia");
FileUtils.delete(cacheFile);
}