【发布时间】:2012-06-20 08:39:33
【问题描述】:
我一直在尝试为我的 Android 应用实施升级计划,该计划不会在 Android 市场上发布。
设计的应用程序工作流程如下:
- 在登录时验证用户并启动主菜单活动。
- 从主菜单活动向我的网站发送了一个请求 最新版本代码值(存储在服务器上的 SQL 数据库中)。
- 将返回的版本代码值与版本代码进行比较 设备上安装的 apk 的值。
- 如果返回的版本代码值不同,则新的 apk 文件位于 服务器已下载并安装。
确保在升级工作流程生效之前已完成以下任务也很重要。
- 必须编译新版本的 apk 以使用更新的 versionCode 值发布
- 必须更新存储在网站数据库中的 versionCode 值
- 新编译的apk文件必须上传到web服务器的正确位置
我已经实施了工作流程的前 3 个阶段,但是当我尝试实施第 4 部分时,我最终收到“解析错误:解析包时出现问题”错误。
下面是有问题的代码:
protected void upgradeApplication() {
StringBuilder urlBuilder = new StringBuilder(getString(R.string.website_ip) + "/" + getString(R.string.application_middleware) + "/" + getString(R.string.apk_folder) + "/");
File file = new File(urlBuilder.toString(), getString(R.string.apk_file));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
我已经通过设备的网络浏览器直接下载 apk 并从下载文件夹安装它来测试 apk 是否可以正确安装。但是当我尝试从应用程序中安装时,我收到了发布的错误。
“解析错误:解析包有问题”
任何帮助将不胜感激
【问题讨论】:
-
您是否将其存储在 getFileDir 中?
-
你的意思是存储apk?我已强制应用程序仅使用内部存储器,因为我无法确定用户是否安装了 SD 卡
-
我还认为以下代码行会从网站上提取文件。
File file = new File(urlBuilder.toString(), getString(R.string.apk_file));其中 urlBuilder 包含指向 apk 文件的链接 -
好的,我添加了
if(file.exists()) { // Start intent },它不存在它跳过代码块内的代码
标签: android upgrade parse-error