前言:基于android 7.0以后,调取系统默认的版本更新与之前的存在一定的差异,而最近在做更新的时候,也是各种坑,记录一下:
1.使用以下的方法进行版本更新:

 private void launchInstallation(File targetFile) {        Intent intent = new Intent(Intent.ACTION_VIEW);//        Uri uri = Uri.fromFile(targetFile);        Uri uri  = null;        if ( android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N){             uri  = FileProvider.getUriForFile(getContext(),                    getString(R.string.file_provider_authority),                    targetFile);            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件        }else{            uri = Uri.fromFile(targetFile);        }        intent.setDataAndType(uri, "application/vnd.android.package-archive");        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        startActivityForResult(intent,0);    }    @Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == 0){            if (resultCode != 0){                //用户选择安装                Process.killProcess(Process.myPid());            }        }    }

2.在实际运行测试的时候,会出现以下的异常状况:

3.修改之后能正常更新的代码:

4.原因分析:
由报错的异常分析,主要是权限不足。通过分析代码,可以看出:

  intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

这两部分做了一个调换,同时,

 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这一句也删除了,所以,推测:addFlag()需要在setFlag()之后,其次,“setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)”可能需要更高的权限。
以上是我遇到这个异常之后的解决方案,这样修改之后,程序可正常运行进行版本的更新。但是,其中更具体的原因现在还没弄清楚,希望有知道的这个异常引起的原因的老铁指点指点。

更多相关文章

  1. 安卓安装 ADV 路径包含中文报错解决方案
  2. Android(安卓)Studio使用教程(三):常用快捷键
  3. 第一个开源的Android项目
  4. android 中findViewById()为null的可能原因
  5. android2.3中webkit在webview的一个更新
  6. phonegap学习入门
  7. android中获取项目的版本信息
  8. Android(安卓)- ListView在setAdapter()后,getChildCount总是0的
  9. 安卓通过recyclerview进行全表增删改查

随机推荐

  1. android 在布局文件中报错:This text fie
  2. Android应用程序与SurfaceFlinger服务的
  3. Android智能手机网络防火墙开发的经验心
  4. android v7包 正常导入使用方法
  5. Android(安卓)最火快速开发框架AndroidAn
  6. Android启动脚本init.rc
  7. Android之Kotlin
  8. Android(安卓)ADT 离线下载技巧(告别在线
  9. Android中的Apk的加固(加壳)原理解析和实
  10. # Android文件存储和数据库基本知识