我点击了我的apk文件所在的URL,然后将收到的字节写入文件。APK文件在写入SD卡时被损坏
class DownloadAPKFile extends AsyncTask<String, Void, Boolean>{
private byte[] fileBytes;
@Override
protected Boolean doInBackground(String... params) {
Log.d("begin", "begun");
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://www.website/Path/my.apk");
try {
HttpResponse response = client.execute(get);
Log.d("Login", "Response " + response.getEntity());
Log.d("Login", "contentLength " + response.getEntity().getContentLength());
String responseBody = EntityUtils.toString(response.getEntity());
fileBytes = responseBody.getBytes();
Log.d("fileBytes", "fileBytes");
String filePath = Environment.getExternalStorageDirectory() + "/myappdir/" + "my" + ".apk";
File file = new File(filePath);
file.getParentFile().mkdirs();
file.createNewFile();
BufferedOutputStream objectOut = new BufferedOutputStream(new FileOutputStream(file));
Log.d("objectOut", "objectOut");
objectOut.write(fileBytes);
Log.d("write", "write");
objectOut.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
这个工程就像一个魅力,我遇到的问题是,从entitiy内容长度为582504
,但是当我看着文件管理器的大小会高达863145
。我认为在将文件写入SD卡时正在添加一些数据。有没有解决这个问题的方法?
我有完全相同的问题,我的APK具有873KB,当我将其导出。 我通过应用下载后,它有910,有时916kb ... 此外,它是一个无效的zip和Android无法读取包信息。试图安装时给我一个分析错误。 – SparK 2014-05-26 14:32:33