1

内部/外部ストレージにある apk ファイルをインストールしようとしています。これは私のコードです:

final String fileuri = "file://" + absolutePath;
Log.v("FILE_BROWSER", "File to be installed: " + Uri.parse(fileuri).getPath());
final Intent promptInstall = new Intent(Intent.ACTION_VIEW);
promptInstall.setDataAndType(Uri.parse(fileuri), "application/vnd.android.package-archive");
promptInstall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(promptInstall);

ファイルが外部ストレージに存在する場合、apk ファイルは正常にインストールされます。例えば。/mnt/sdcard/MyApp.apk

ただし、apk ファイルが内部ストレージ (例: /data/data/com.myapp/files/MyApp.apk) にある場合、インストールは失敗します。エラーメッセージは次のとおりです。Parse Error: There is a problem parsing the package

1 つの解決策は、ファイルを SDCARD にコピーしてからインストールすることです。ただし、SDCARD が利用できないシナリオでは、このトリックは機能しません。

この人たちの助けはありますか?SDCARD が利用できない場合、内部ストレージ ディレクトリに存在する apk をインストールするにはどうすればよいですか?

4

1 に答える 1

4

このために、.apk ファイルにはContext.MODE_WORLD_READABLE許可が必要です。

アプリケーションの内部ストレージに .apk ファイルを書き込むためにこれを行っています

String outFileName = path+"/<Application_Name>.apk";
OutputStream myOutput = openFileOutput("<Application_Name>.apk", Context.MODE_WORLD_READABLE);

そして、それをインストールするには、

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path+"/<Application_Name>.apk")), "application/vnd.android.package-archive");
startActivity(intent);

パスはこちら path = getFilesDir().getAbsolutePath();

そして、これは私の場合はうまくいきます..

于 2012-04-23T08:02:34.370 に答える