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

一种解决方案是将文件复制到 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 回答