5

我的应用程序验证是否有我的应用程序的新版本(我的应用程序不在 Play 商店中)并自动将 apk 文件下载到 sdcard/download。然后我想开始安装并使用以下代码:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "file.apk")), "application/vnd.android.package-archive");
startActivity(intent); 

但它显示弹出“解析错误:解析包时出现问题”

在我的 AndroidManifest 中,我已经获得了许可:

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.DELETE_PACKAGES"/>
4

3 回答 3

2

我有一个类似的错误信息。我的问题的根源是我将apk下载的文件保存到我的application data目录而不是sdcard. 通过保存到/sdcard/myprog.apk我能够毫无问题地进行安装。

由于我能够通过网络浏览器下载来进行安装,因此只需弄清楚这些下载的去向,然后当我以编程方式下载以保存在同一位置时。

我发现以下内容对我的更新过程非常有用:使用 Android 下载一个文件,并在 ProgressDialog 中显示进度,然后我使用了类似于您必须进行安装的内容。

于 2013-11-13T16:43:04.973 回答
1

您是否可以手动安装文件,当apk具有损坏的清单文件时,解析包的错误问题就来了。首先检查您下载的文件的手动安装是否有效。

于 2012-05-23T08:03:25.337 回答
0

您需要在文件路径之前添加“file://”。像这样的东西:

intent.setDataAndType(Uri.parse("file://" + filepath), "application/vnd.android.package-archive");
startActivity(intent);
于 2015-01-27T09:39:25.727 回答