1

サーバーから Android アプリをダウンロードし、次を使用してアプリケーションの内部スペースに保存しています。

URL url = new URL(Urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
File outputFile = new File(getFilesDir(), "Apps");
outputFile.mkdirs();
File file = makeFilename(outputFile, _appName + ".apk");
file.createNewFile();
file.setExecutable(true);
file.setReadable(true, false);
file.setWritable(true, false);
FileOutputStream fout = new FileOutputStream(zipFile);
InputStream in = conn.getInputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
fout.write(buffer, 0, length);
}
fout.close();
in.close();
outputFile.setExecutable(true, false);
outputFile.setReadable(true, false);
outputFile.setWritable(true, false);


private File makeFilename(File base, String name) {
        if (name.indexOf(File.separatorChar) < 0) {
            return new File(base, name);
        }
        throw new IllegalArgumentException("File " + name
                + " contains a path separator");
    }

ダウンロードが完了すると、通知が表示されます。この通知をクリックすると、アプリがインストールされます。しかし、実際には、通知をクリックすると、「パッケージの解析中にエラーが発生しました」と表示されます。私が間違っていることは何ですか?

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(new File(getFilesDir()+ "/Apps/_appName.apk")),"application/vnd.android.package-archive");
PendingIntent act = PendingIntent.getActivity(MainActivity._activity,0, i, 0);
notification.setLatestEventInfo("TEXT", "TEXT, act);
4

1 に答える 1

1

ダウンロードした .apk ファイルがアプリケーション自体に対して非公開であることに疑いがあります。

では、チェックしてみると、

また、アプリケーションにファイルを保存するときは、WORLD_READABLEのようなパーミッションがあることを確認してください。

Context.MODE_WORLD_READABLE

何かのようなもの、

OutputStream myOutputFile = openFileOutput("xxxx.apk", Context.MODE_WORLD_READABLE);
于 2012-07-18T12:49:33.847 に答える