今天在做自动检测软件更新的时候,将服务器上apk下载下来后,调用Android安装代码进行安装,报了如下错误:
解析错误:解析软件包时出现问题
检查了一下代码,发现出现这个问题的原因是没有关闭输入输出流和关闭网络连接,在下载完后需要依次将这些打开的流关闭,就能解决问题了
bis.close();
bos.close();
connection.disconnect();
/**
* 下载apk
*/
public void downLoadApk() {
try {
URL url = new URL("http://hxyiyo.com/ydjx_tV1.0.apk");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
File file = new File(Environment.getExternalStorageDirectory() + "/newap.apk");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
int fileLength = connection.getContentLength();
int downloadLength = 0;
int progressLength = 0;
int n = 0;
byte[] buffer = new byte[1024];
while ((n = bis.read(buffer, 0, buffer.length)) != -1) {
bos.write(buffer, 0, n);
downloadLength += n;
progressLength = (int)(((float)downloadLength / fileLength)*100);
Message msg = new Message();
msg.arg1 = progressLength;
hanlder.sendMessage(msg);
}
bis.close();
bos.close();
connection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}