我一直在努力为我的Android应用实施升级计划,该计划不会在Android市场上发布。
设计的应用程序工作流程如下:
在升级工作流程开始工作之前,确保完成以下任务也很重要。
我已经实现了工作流程的前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将正确安装。但是当我尝试从应用程序中安装时,我得到了发布的错误。
“解析错误:解析包”
的问题任何帮助将不胜感激
答案 0 :(得分:1)
如果使用此行
File file = new File(urlBuilder.toString(), getString(R.string.apk_file));
你试图通过传递url作为参数来下载文件,然后它将无法工作。 File
构造函数无法下载文件。
你应该use an AsyncTask下载apk,等待它完成之后只有你可以安装它。
答案 1 :(得分:1)
如果您将.apk文件存储在私有内部存储中,则需要Context.MODE_WORLD_READABLE
权限。
以下代码段将为您提供帮助。
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);