最近做项目发现Android 8.0+ 更新安装apk时 出现安装失败的情况  总结原因是 缺少安装的权限

Android 8.0 (Android O)为了针对一些流氓软件引导用户安装其他无关应用。在应用权限设置的“特殊访问权限”中,加入了“安装其他应用”的设置。

简单的方法  可以直接在Manifest.xml中加入下面的权限:(亲测可用)

<uses-permissionandroid:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

另外当我们执行安装的代码后 都会加入杀死进程的代码 如下:

          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, "com.example.fileprovider",tempFile);
//此处为Uri临时授权
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
} else {
uri = Uri.fromFile(tempFile);
}
private void install(String apkPath) {
Intent intent = new Intent(Intent.ACTION_VIEW);
//Android 7.0+ 需要用FileProvider的方式访问隐私目录(比如相册)
if (Environment.SYSTEM_VERSION_CODE >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, "com.example.fileprovider",tempFile);
//此处为Uri临时授权
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
uri = Uri.fromFile(tempFile);
}else{
uri = Uri.fromFile(tempFile);
}
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent); //最后杀死进程
Handler mHandler=new Handler(context);
mHandler.postDealy(new Runnable(){
public void run(){
//或者是 System.exit(0);
android.Process.KillProcess((android.os.Process.myPid()); }
},500);//在这里延迟 500ms 是为了防止app使用FileProvider获取隐私文件时被杀死 导致安装失败 }

Android 8.0+ 更新安装apk失败的问题的更多相关文章

  1. android 8.0 intent安装apk失败屏幕闪过

    需要做两处设置: 1.android8.0要加一条权限: <uses-permission android:name="android.permission.REQUEST_INSTA ...

  2. android 6.0 Intent 安装apk闪退

    需求描述: 利用android系统自带的DownloadManager下载apk文件,并且打开安装界面. 问题描述: 关于DownloadManager的使用网上有很多例子,在此不啰嗦.下载完成之后在 ...

  3. Android Studio 2.3 解决小米手机调试安装apk失败问题

    在开发者选项里面,拉到底,把miui优化选项去掉就好了. 参考资料 [问题反馈] Android Studio 2.3 在红米note3手机中 调试安装Apk失败

  4. FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 浅谈Android Studio3.0更新之路(遇坑必入)

    >可以参考官网设置-> 1 2 >> Fantasy_Lin_网友评论原文地址是:简书24K纯帅豆写的我也更新一下出处[删除]Fa 转自脚本之家 浅谈Android Studi ...

  6. Android 4.0 x86安装教程 附带联网参数详细设置

    Android 4.0 x86是一个可以支持在电脑上运行的Android 4.0系统.没有手机一样也可以体验Android 4.0.这对玩机爱好者们来说也算得上是一个不大不小的好消息.不过目前的And ...

  7. Android 9.0更新

    北京时间2018年8月7日上午,Google 发布了 Android 9.0 操作系统.并宣布系统版本 Android P 被正式命名为代号"Pie". Android 9.0 利 ...

  8. Android 在代码中安装 APK 文件

    废话不说,上代码 private void install(String filePath) { Log.i(TAG, "开始执行安装: " + filePath); File a ...

  9. 安卓(Android)手机如何安装APK?

    我大天朝的安卓手机只能在一个被阉割的APP市场里玩耍,有些APP可能需要直接安装APK文件.APK 是 Android Package (安卓安装包)安卓手机如何安装APK呢? 在电脑上下载安装APK ...

随机推荐

  1. PADS导入DXF板框,不能将开放的2D线转换成闭合的板框错误

    刚开始学会用PADS,学习的时候都是在PADS里手绘一个板框的.然后实际项目中,都是需要导入结构DXF板框文件,第一次导入就发现了问题. 第一次导入DXF后,需要将DXF转换为板框,但提示 “不能将开 ...

  2. RAND函数和SRAND函数

    首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数) 表头文件: #include<stdlib.h&g ...

  3. 关于RandomAccessFile一个坑!!!!

    最近正好遇到了使用RandomAccessFile做断点下载的情况,被一个问题坑了好多次 本来的代码: RandomAccessFile randomAccessFile = new RandomAc ...

  4. leetCode83. 删除排序链表中的重复元素

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...

  5. mvc后台上传

    public ActionResult AddEnclosure(HttpPostedFileBase Filedata) { if (Filedata == null || string.IsNul ...

  6. python学习(一)--python解释器

    python学习模式,每篇都会有一些总结,然后根据总结去查一查,学一学,基础就会很扎实的 python解释器 1.python版本和安装 python2.x和python3.x https://www ...

  7. 13Linux_vsftpd_Samba_NFS实现文件共享_TFTP

    vsftpd服务程序: 匿名开放模式 本地用户模式 虚拟用户模式 简单文件传输协议 TFTP:UDP协议,端口69 TFTP服务使用xinetd服务程序来管理. Samba文件共享服务 NFS网络文件 ...

  8. 2018-2019-2 网络对抗技术 20165304 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165304 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  9. Selenium分布式自动化测试平台 Standalone Server 4.0 搭建

    最新的selenium测试平台大概有这么几个组件 Selenium Standalone Server: 用来搭建远程测试平台以及分布式测试. Selenium WebDriver: 最基础的用来创建 ...

  10. IBM MQ 使用指南

    一.MQ基本操作 MQ中有几个很重要的组件:队列管理器(QueueManager).队列(Queue)和通道(Channel).其基本的操作方法如下:  1)创建队列管理器 crtmqm –q QMg ...