0%

Android 解决app升级安装完成后回到桌面不出现完成、打开界面的问题

今天在发布版本的时候测试升级安装发现从服务器上下载的apk从代码里跳转到安装界面进行升级安装的时候出现了点问题,安装完成以后一闪而过回到了Android桌面,但是应用又安装成功了,从应用列表启动确实是新版本的应用。为什么会出现这样的情况呢?这种现象会给用户带来很不好的体验,让用户认为是安装失败了。经过一系列的Google查找换了N个搜索关键字,最后终于找打了解决办法。记录一下。
调用升级安装的代码是这样的:

1
2
3
4
5
Uri uri = Uri.fromFile(new File(filePath));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri,
"application/vnd.android.package-archive");
startActivity(intent);

使用该方法,安装完成后,安装界面就关闭了,不会看到一个包含完成和打开按钮的界面。
在网上找到的解决办法如下:

1
2
3
4
5
6
7
Uri uri = Uri.fromFile(new File(filePath));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri,
"application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
android.os.Process.killProcess(android.os.Process.myPid());

加上了intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);和android.os.Process.killProcess(android.os.Process.myPid());
网上找到的文章说明是这样的:
android.os.Process.killProcess(android.os.Process.myPid());如果不加,最后不会提示完成、打开。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);如果不加,最后安装完成,点打开,无法打开新版本应用。

但是经本人测试发现上面两行代码加其中任何一个都可以使升级安装恢复正常最后出现完成、打开的界面。当然保险起见两个都加上也没有问题。

至于为啥会出现这种情况呢?通过解决办法来分析,Intent.FLAG_ACTIVITY_NEW_TASK是在新的栈打开安装界面;killProcess将当前应用kill掉。那会不会是因为当前应用正在运行的原因呢?但是为啥之前一直没加这两行代码一直没问题呢?而且从本地sdcard手动点开apk安装也没有问题,有点费解。记录一下问题的解决办法吧,如果谁知道原因可以留言告诉我,谢谢。

 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!