我的应用程序验证我的应用程序是否有新版本(我的应用程序不在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"/>
答案 0 :(得分:2)
我有类似的错误消息。我的问题的根源是我将apk
保存到我的application data
目录而不是sdcard
。通过保存到/sdcard/myprog.apk
,我可以毫无问题地进行安装。
由于我能够通过网络浏览器下载来安装,因此需要确定这些下载的位置,然后以编程方式下载以保存在同一位置。
我发现以下内容对我的更新过程非常有用:Download a file with Android, and showing the progress in a ProgressDialog然后我使用了类似于您必须安装的内容。
答案 1 :(得分:1)
当apk有一个损坏的清单文件时,你是否能够手动安装文件,解析包的错误问题。检查您下载的文件的手动安装是否正常工作。
答案 2 :(得分:0)
您需要在文件路径前添加“file://”。 像这样的东西:
intent.setDataAndType(Uri.parse("file://" + filepath), "application/vnd.android.package-archive");
startActivity(intent);