我试图从我的服务器下载一个APK文件,并将其保存在电话存储中。
下面是我使用的代码:
String apkLink = "http://10.1.20.53/files/test.apk";
URL url = new URL(apkLink);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
context.getDir("test.apk", Context.MODE_WORLD_WRITEABLE);
FileOutputStream fos = context.openFileOutput("app_test.apk", Context.MODE_WORLD_WRITEABLE);
InputStream is = c.getInputStream();
fileSize = c.getContentLength();
byte[] buffer1 = new byte[1024];
int len1 = 0;
int total = 0;
while ((len1 = is.read(buffer1)) != -1) {
total += len1;
percentage = (int)(total*100/fileSize);
publishProgress();
fos.write(buffer1, 0, len1);
}
fos.close();
is.close();对于XML文件,同样的代码运行良好。(当我将XML文件下载到电话内存中时)。
有人能帮我吗?
谢谢
实际上我知道了原因,
context.getDir("test.apk",Context.MODE_WORLD_WRITEABLE);代码行创建一个名为"data/data/package_name/app_test.apk“的目录。
但是FileOutputStream fos = context.openFileOutput("app_test.apk");创建一个名为data/data/package_name/files/app_test.apk的目录。
我试图从data/data/package_name/app_test.apk目录中读取该文件。
不管怎样,现在我要用这段代码来执行这个文件,
File f = new File(getFilesDir()+ "/app_test.apk");
intent.setDataAndType(Uri.fromFile(f) , "application/vnd.android.package-archive");
startActivity(intent);但是它给了我一个解析错误信息。
有人能想出解决办法吗?
谢谢。
发布于 2012-06-01 08:21:33
创建文件时尝试使用Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE。
发布于 2012-05-31 11:43:10
我已经回答了类似的问题,here。考虑到你的问题,我有几种不同的看法,为什么它不起作用。
https://stackoverflow.com/questions/10828723
复制相似问题