如果把旧的版本卸载后安装下载的版本是没有问题的,如果没有卸载旧的版本直接覆盖安装就会出现:应用程序未安装的错误。首先排除的问题:签名问题一致,只是版本号和版本名称不一致,其他都一致,以下是开启安装的代码:
// 通过Intent安装APK文件
Intent i = new Intent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.parse("file://" + file.toString()), "application/vnd.android.package-archive");
mContext.startActivity(i);
我查了下,基本遇到的问题我都检查过了,都排除了,现在还是不行,我的版本号是1000,新的版本号是1001,我觉得和这个应该没问题。
如果,确信代码没有问题,就首先检查一下手机本身的安全设置问题,然后检查一下权限:
,再有就是你的手机是android6.0吗,那个权限的设置要做好。
手机不是6.0,手机本身的安全设置也没问题,在其他机器上也是一样。
version code两个有差别么
新版和旧版的以下值贴出来看看吧
versionCode 12345678
versionName '12345678'
应用有创建数据库发生变化而没有提高数据库版本号 也会导致安装不成功的
protected void installApk() {
File apkfile = new File(saveFileName);
if (!apkfile.exists()) {
return;
}
GetBroadcast.registerReceiver(getApplicationContext());// 注册广播,用于监听应用是否安装完成
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://" + apkfile.toString()),
"application/vnd.android.package-archive");// File.toString()会返回路径信息
mContext.startActivity(i);
}
这个是我之前项目中的安装code 跟你的差不多, 不过没出现你说的问题
找到问题了,是因为服务器上的版本是我正式打包的版本,我自己的版本是直接运行的版本所以不能覆盖安装,把项目打包安装到手机上就可以了,真的是粗心大意了。