孙老二
2016-12-26 09:02
采纳率: 50%
浏览 4.0k

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,我觉得和这个应该没问题。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 安小牛 2016-12-26 09:26
    已采纳

    如果,确信代码没有问题,就首先检查一下手机本身的安全设置问题,然后检查一下权限:





    ,再有就是你的手机是android6.0吗,那个权限的设置要做好。

    点赞 评论
  • 孙老二 2016-12-26 11:28

    手机不是6.0,手机本身的安全设置也没问题,在其他机器上也是一样。

    点赞 评论
  • Antway_ 2016-12-26 14:37

    version code两个有差别么

    点赞 评论
  • rongyili88 2016-12-27 00:51

    新版和旧版的以下值贴出来看看吧
    versionCode 12345678
    versionName '12345678'

    点赞 评论
  • Anro丶 2016-12-27 02:02

    应用有创建数据库发生变化而没有提高数据库版本号 也会导致安装不成功的

    点赞 评论
  • pengpeng952789 2016-12-29 09:13
    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 跟你的差不多, 不过没出现你说的问题

    点赞 评论
  • 孙老二 2016-12-29 12:08

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

    点赞 评论

相关推荐 更多相似问题