サーバーから 1 つの 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);
しかし、解析エラー メッセージが表示されます。
誰でも解決策を考えることができますか?
ありがとうございました。