您的位置:首页 > 移动开发

android app升级(下载)完毕后自动弹出安装界面的实现

2015-10-28 14:17 441 查看
之前写过一个Demo,是更新app的功能,特点是通知栏实时更新下载进度,下载完成后通知栏提示下载完成,下拉通知栏,点击安装。具体的文章内容详见http://blog.csdn.net/jdfkldjlkjdl/article/details/43232319

那么,怎样实现app升级完毕后自动弹出安装界面呢,此文探讨的就是这个功能

直接上代码:

String fileName = "/sdcard/tmp.apk";
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(new File(fileName) ), "application/vnd.android.package-archive");
startActivity(i);


我是在UpdateService类中加入这段代码的,报错如下:

 Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

原因是:

  Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

修改后的代码为:

String fileName = "/sdcard/tmp.apk";
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.fromFile(new File(fileName) ), "application/vnd.android.package-archive");
startActivity(i);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: