Android 自动更新覆盖安装失败

如果把旧的版本卸载后安装下载的版本是没有问题的,如果没有卸载旧的版本直接覆盖安装就会出现:应用程序未安装的错误。首先排除的问题:签名问题一致,只是版本号和版本名称不一致,其他都一致,以下是开启安装的代码:

 // 通过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 跟你的差不多, 不过没出现你说的问题

找到问题了,是因为服务器上的版本是我正式打包的版本,我自己的版本是直接运行的版本所以不能覆盖安装,把项目打包安装到手机上就可以了,真的是粗心大意了。