protected void downloadAPK(String downloadUrl,String fileSavePath) {
File downloadFile = null;
if (TextUtils.isEmpty(downloadUrl))
return;
HttpURLConnection connection = null;
try {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
URL url = new URL(downloadUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(60000);
connection.setDoInput(true);
InputStream is = connection.getInputStream();
final File temp = new File(fileSavePath);
if (temp.exists())
temp.delete();
temp.createNewFile();
temp.setReadable(true, false);
temp.setWritable(true, false);
downloadFile = temp;
Log.d("downloadAPK", "downloadUrl " + downloadUrl + "\n save to " + temp);
OutputStream os = new FileOutputStream(temp);
byte[] buf = new byte[8 * 1024];
int len;
try {
while ((len = is.read(buf)) != -1) {
os.write(buf, 0, len);
}
os.flush();
if (os instanceof FileOutputStream) {
((FileOutputStream) os).getFD().sync();
}
} finally {
closeSilently(os);
closeSilently(is);
}
Log.d("downloadAPK", "download complete url=" + downloadUrl + ", fileSize= " + temp.length());
// installPkg(this, temp, pkg);
} catch (Exception e) {
Log.w("downloadAPK", e);
if (downloadFile != null)
downloadFile.delete();
} finally {
if (connection != null)
connection.disconnect();
}
}
public static final void closeSilently(Object closeable) {
try {
if (closeable != null) {
if (closeable instanceof Closeable) {
((Closeable) closeable).close();
} else if (closeable instanceof Socket) {
((Socket) closeable).close();
} else if (closeable instanceof ServerSocket) {
((ServerSocket) closeable).close();
} else {
throw new IllegalArgumentException("Unknown object to close");
}
}
} catch (IOException e) {
// ignore
}
}