本人在写android 9.0 程序更新时遇到了这样一个问题:程序可以更新成功,但是不弹出“完成、打开”界面,就算加上
android.os.Process.killProcess(android.os.Process.myPid());
让“打开、完成”界面强行出来,但是点击“打开”按钮同样无法打开更新后的程序,研究了半天,下面的代码可以解决上述遇到的问题。
1 File file = new File(ManagerHelper.creatFilePath(), Global.APKName); 2 if (file.exists()) { 3 Intent intent = new Intent(); 4 intent.setAction(Intent.ACTION_VIEW); 5 if (Build.VERSION.SDK_INT >= 24) {//android 7.0以上 6 try { 7 intent.addCategory("android.intent.category.DEFAULT"); 8 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION); 9 Uri contentUri = FileProvider.getUriForFile(context, "com.example.imooc_weixinfragment.fileprovider", file); 10 intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); 11 12 } catch (Exception e) { 13 // TODO Auto-generated catch block 14 e.printStackTrace(); 15 } 16 } else {//Android7.0以下 17 intent.setDataAndType(Uri.fromFile(file), 18 "application/vnd.android.package-archive"); 19 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 20 } 21 context.startActivity(intent); 22 }