我试图从我的服务器下载一个 APK 文件并将其保存在 Phone Storage中。
以下是我使用的代码:
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);
但它给了我一个解析错误信息。
任何人都可以想到一个解决方案?
谢谢你。