/**

* 判断版本

*/

private void checkVersionUpdate(final Context mContext, final File file) {

if (Build.VERSION.SDK_INT >= 26) {

boolean b = getPackageManager().canRequestPackageInstalls();

if (b) {

installApk(mContext, file);

} else {

//请求安装未知应用来源的权限

String[] permissions = {Manifest.permission.REQUEST_INSTALL_PACKAGES};

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

requestPermissions(permissions, 11);

}

}

} else {

installApk(mContext, file);

}

}

public void installApk(Context mContext, File file) {

Uri fileUri;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

//通过FileProvider创建一个content类型的Uri用于适配7.0

fileUri = FileProvider.getUriForFile(mContext, "com.bingding.richtext.app.fileprovider", file);

} else {

fileUri = Uri.fromFile(file);

}

Intent it = new Intent();

it.setAction(Intent.ACTION_VIEW);

it.setDataAndType(fileUri, "application/vnd.android.package-archive");

it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 防止打不开应用

it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);// 兼容7.0

startActivityForResult(it,111);

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

List deniedPermissions = getDeniedPermissions(permissions, grantResults);

boolean agreeAll = deniedPermissions.isEmpty();

if (requestCode == 11) {

if (permissions.length > 0 && grantResults.length > 0 && agreeAll) {

installApk(MainActivity.this, newApkFile);

} else {

showToast("请设置允许安装应用");

Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);

startActivityForResult(intent, 1122);

}

}

}

记得配置清单文件

file_paths文件

标签:8.0,mContext,apk,7.0,VERSION,Intent,Build,file,permissions

来源: https://blog.csdn.net/SMITHKANG/article/details/97113711

android 7.0 更新apk,Android更新apk兼容7.0和8.0相关推荐

  1. Android Apk增量更新

    前言 有关APK更新的技术比较多,例如:增量更新.插件式开发.热修复.RN.静默安装. 下面简单介绍一下: 什么是增量更新?   增量更新就是原有app的基础上只更新发生变化的地方,其余保持原样. 与 ...

  2. Android 自动检测更新,自动下载apk更新版本

    注意:华为手机需要先上架华为应用市场才可以自动更新apk.其他手机可能也需要先上架 关于安卓8.0不显示下载通知问题:https://blog.csdn.net/meixi_android/artic ...

  3. android apk 自动更新,Android自动更新APK

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通过Service的方式(推荐使用JobService),在后台获取服务器的APK信息,然后下载到本地,通过调用系统安装 ...

  4. android系统签名app自动更新,【Android 进阶】Apk 使用系统签名

    刚入职的时候,固件中 app 需要在源码中编译,不是很理解,为什么不使用 IDE 编译,然后 copy 到 /system/app/*,咨询导师,得到反馈 app 需要使用系统的权限 在 Androi ...

  5. Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]

    摘要:上一节讲解了PKMS的 权限扫描,扫描/system/etc/permissions中的xml,存入相应的结构体中,供之后权限管理使用. 这一节主要来讲讲APK的扫描. 阅读本文大约需要花费15 ...

  6. Android 实现应用更新适配 Android O (Android 8.0)

    之前写过一篇 Android 实现应用更新(适配Anndroid N),本篇主要讲解Android O(Android 8.0)上应用更新的适配问题,应用更新的完整实现请结合上一篇文章一起,文末也会给 ...

  7. Android开发之下载Apk安装的方法兼容Android7.0和8.0及以上

    具体查看代码: 首先在清单文件配置三个权限读写权限和请求安装权限(兼容Android8.0手机)如下: <!--安装apk权限--><uses-permission android: ...

  8. Android 4.0.4系统下实现apk的静默安装和启动

    转自http://www.linuxidc.com/Linux/2013-02/79403.htm 未亲测 最近在Android 4.0.4系统下实现apk的静默安装和启动的功能,这里和大家分享一下, ...

  9. 一加6点击五下出来Android10,一加6T现已推送Android 10.0公测版更新

    IT之家10月10日消息 据一加社区官方消息,一加6T Android 10.0公测版现已推送,详情如下. ▲图源IT之家网友投稿 [更新日志] 系统更新至Android 10版本 全新的UI设计,轻 ...

  10. android pie mi 3 tab,三星的旗舰平板电脑Galaxy Tab S4正在更新到Android 9.0 Pie

    看来三星已经推出Galaxy Tab S4 Android 9.0 Pie推出,期待已久的更新,购买旗舰平板电脑的消费者将很快享受.8月份在市场上首次亮相的平板仍在运行Android 8.1 Oreo ...

最新文章

  1. Selenium查询10010账户余额——python篇
  2. ArcEngine中画点画线画面
  3. LeetCode_每日一题今日份_343.整除拆分
  4. 【Tomcat】Tomcat性能分析
  5. 攻击防护手段_如何防护ddos流量攻击?
  6. 如何判断国际会议是否被EI收录
  7. Springcloud服务如何在Eureka安全优雅的下线
  8. pycharm 修改新建文件时的头部模板(默认为__author__='...')
  9. 同步异步和阻塞3-同步阻塞
  10. 【收藏】夜光遥感数据下载网址及方式
  11. ubuntu配置搜狗输入法
  12. WinDirStat – 硬盘空间都用在哪里了
  13. Mugeda(木疙瘩)H5案例课—世界名画抖抖抖起来了-岑远科-专题视频课程
  14. matlab向量乘法要加.,matlab中的矩阵与向量运算
  15. 联想笔记本系统还原要如何操作
  16. 0xC0000005:读取位置 0x00000004时发生访问冲突。
  17. 彻底卸载360画报(流氓屏保软件)---亲测有效
  18. XMPP 客户端 Smack Android开发基础
  19. 年底了,清空自己,让心归零!
  20. 鼠标dpi设置多少合适呢?查看鼠标dpi的方法

热门文章

  1. C++中的空指针和void * 指针
  2. 小小聊天室,慢慢的回忆啊!(TCP 通信实现)
  3. Navicat日期时间格式
  4. MySQL删除同一个字段的多条记录
  5. php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?
  6. Tomcat maven 插件启动出现tomcat\conf\tomcat-users.xml cannot be read异常解决方法
  7. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
  8. 第四届蓝桥杯省赛javaB组试题解析
  9. 直接在Dao层进行测试的问题
  10. Java IO流之打印流与标准流