在android 7.0之前版本更新其实相当简单,只需要使用系统下载器就能够完成下载之后安装,但是在7.0之后android升级安全机制,下载安装受到一些限制,以至于安装无反应或无法正常安装。

1、清单文件AndroidManifest.xml application中添加

    android:name="android.support.v4.content.FileProvider"

    android:authorities="${applicationId}.fileprovider"

    android:exported="false"

    android:grantUriPermissions="true">

        android:name="android.support.FILE_PROVIDER_PATHS"

        android:resource="@xml/provider_paths" />

2、资源目录res新建xml文件夹,新建provider_paths.xml

文件内容如下:

<?xml version="1.0" encoding="utf-8"?>

        name="external"

        path="." />

3、安装方法如下:

private void installApk() {

File apkfile =new File(saveFileName);

    if (!apkfile.exists()) {

return;

    }

//Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);

    Intent intent =new Intent(Intent.ACTION_VIEW);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        //intent.setDataAndType(Uri.fromFile(apkfile), "application/vnd.android.package-archive");

        intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");

    }else {

// 声明需要的临时的权限

        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // 第二个参数,即第一步中配置的authorities

// 注意这里, 因为这里容易导错包,如果你是多module开发,一定要使用主Module(即:app)的那个BuildConfig

// 这里说明一下,我上面的清单文件是主Module的,所以这里也要导包导入主module的,我觉得写到被依赖module也是可以的,但要保持一致,这个我没试过)

        Uri contentUri = FileProvider.getUriForFile(context, xx.xxx.BuildConfig.APPLICATION_ID +".fileprovider", apkfile);

        intent.setDataAndType(contentUri, "application/vnd.android.package-archive");

    }

startActivity(intent);

}

注:Android8.0、9.0添加请求未知来源应用安装权限

更多相关文章

  1. Android(安卓)Studio安装教程
  2. android背景选择器selector用法汇总
  3. android的apk包签名
  4. Android(安卓)studio开发找不到HttpClient问题
  5. 认识Gradle
  6. Android手动编译打包
  7. Android(安卓)APK反编译详解(附图)
  8. Android7.0 MTK方案 静默安装和卸载
  9. Android(安卓)应用安装设置

随机推荐

  1. android就一定比java差?
  2. 安卓(android)开发应该怎么学?需要哪些基础
  3. 豪赌Web apps,谷歌Chrome开发工具直通Andr
  4. 如何发布你的Android应用程序
  5. 基于android的远程视频监控系统(已开放源
  6. 谷歌宣布Android设备累计激活量突破10亿
  7. Android(安卓)Market正式更名Google Play
  8. 详解Android广播机制
  9. Android和设计模式:建造者模式
  10. RxJava2+Retrofit2+okHttp的二次封装