今天在做自动检测软件更新的时候,将服务器上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(); } }