Android 6.x 及以下

Android 6.x 及以下使用Uri.fromFile()获取文件的Uri,只需要配置上Action、DataAndType即可隐式启动系统安装器。

/**

Android 6.x 及以下安装 APK

Build.VERSION.SDK_INT>=Build.VERSION_CODES.N

@param context 上下文

@param file 要安装的APK文件对象

*/

public void installApk6x(Context context, File file) {

Intent intent = new Intent();

intent.setAction(Intent.ACTION_INSTALL_PACKAGE);

intent.setDataAndType(Uri.fromFile(file),

"application/vnd.android.package-archive");// APK的MimeType

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 在新栈中启动

context.startActivity(intent);

}

Android 7.x

Android 7.0 起,引入了 FileProvider,APP需要手动配置对外暴露的目录并通过FileProvider.getUriForFile()获取文件的Uri。

/**

Android 7.x 安装APK,需要配置FileProvider

Build.VERSION.SDK_INT>=Build.VERSION_CODES.N

@param context 上下文

@param file 要安装的APK文件

@param authority FileProvider配置的authority

*/

public void installApk7x(Context context, File file, String authority) {

Intent intent = new Intent();

intent.setAction(Intent.ACTION_INSTALL_PACKAGE);

Uri uri = FileProvider.getUriForFile(context, authority, file); // 通过FileProvider获取Uri

intent.setDataAndType(uri, "application/vnd.android.package-archive");// APK的MimeType

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 在新栈中启动

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 授权读取URI权限

context.startActivity(intent);

}

Android 8.x 及以上

需要先在清单文件中配置以下权限:

/**

Android 8.x 及以上安装APK,除配置FileProvider外,

还需要在清单文件中添加REQUEST_INSTALL_PACKAGES权限。

Build.VERSION.SDK_INT>=Build.VERSION_CODES.O

@param context 上下文

@param file 要安装的APK文件

@param authority FileProvider配置的authority

*/

public void installApk7x(Context context, File file, String authority) {

Intent intent = new Intent();

intent.setAction(Intent.ACTION_INSTALL_PACKAGE);

Uri uri = FileProvider.getUriForFile(context, authority, file); // 通过FileProvider获取Uri

intent.setDataAndType(uri, "application/vnd.android.package-archive");// APK的MimeType

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 在新栈中启动

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 授权读取URI权限

context.startActivity(intent);

}

android 安装apk -99,Android APK 安装适配相关推荐

  1. Android自动伸展动画,android – 如何实现平滑的展开/折叠动画

    我指的是在这里找到的扩展/折叠动画代码. 虽然这样做不好,动画不顺利. 我做一些登录代码. public static void expand(final View v) { v.measure(Me ...

  2. android计算器工程布局,Android 计算器布局测试

    1 <?xml version="1.0" encoding="utf-8"?> 2 3 android:layout_width="ma ...

  3. Android应用安装apk版本升级,适配Android 8.0和Android 10.0下载安装,shell命令安装APK

    shell命令安装 /*** 安装apk** @param path apk文件路径*/ public void installAPK(String path) {Log.i(TAG, "i ...

  4. Android APK应用安装原理(2)-查找APK并自动安装

    Android每次启动的时候会自动安装位于特定目录下的APK,这个过程会在packageManagerService这个类的构造方法中进行,这里会创建多个目录用于预查找: [java] view pl ...

  5. 安装APK到android设备那些事儿

    APK是AndroidPackage的缩写,即Android系统的应用软件安装包(apk).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或And ...

  6. 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法

    前言 相信这样一个问题,大家都不会陌生, "有什么的方法可以使Android的程序APK不用安装,而能够直接启动". 发现最后的结局都是不能实现这个美好的愿望,而腾讯Android ...

  7. 【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )

    文章目录 一.Android 应用安装 二.APK 文件格式 三.使用 Python 提取 APK 文件 一.Android 应用安装 APK 是 Android 应用的安装文件 , 现在也有 AAB ...

  8. 【Android 插件化】VirtualApp 接入 ( 安装 APK 插件应用 | 启动插件 APK 应用 | MainActivity 安装启动插件完整代码 )

    文章目录 一.安装 APK 插件应用 二.启动插件 APK 应用 三.MainActivity 完整代码 四.博客源码 一.安装 APK 插件应用 调用 VirtualCore.get().insta ...

  9. 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )

    文章目录 一.APK 文件结构 二.APK 打包流程 三.APK 安装流程 四.安卓虚拟机 一.APK 文件结构 Android 应用的安装包时 以 " .apk " 为后缀的 A ...

  10. android shell用户界面,shell界面下安装和卸载Android应用程序(apk包)

    安装 1. $ adb install apk文件名 安装系统应用 $ adb push apk文件名 /system/app 卸载 $ adb uninstall 包名 Home->设置-&g ...

最新文章

  1. git工具tig用法
  2. 数据库抽象层 PDO
  3. http协议的完整组成
  4. 【Boost】boost库asio详解8——TCP的简单例子1
  5. requestbody接收不到参数_使用Spring MVC解析嵌套参数在三种 ContentType 下的绑定方式...
  6. 超详细图解!【MySQL进阶篇】SQL优化-索引-存储引擎
  7. 【LeetCode笔记】143. 重排链表(Java、链表、栈、快慢指针)
  8. MySQL笔记-解决InnoDB: Could not find a valid tablespace file for 'mysql/innodb_index_stats'
  9. Linux上安装wkhtmltopdf,以及调试所遇到的问题
  10. .DateTimeToStr函数专用优化版
  11. 删除链表中重复的节点
  12. 47. Magneto Transaction Email(1)
  13. HTML基本语法总结
  14. python批量发送邮件_python批量发邮件
  15. k8s+docker集群整合搭建(完整版)
  16. python工资高还是java-python工资高还是java?python和java薪资对比
  17. 网页抓取及信息提取(二)
  18. 简单爬虫--爬取百度热点新闻标题
  19. 踩方格(空间压缩+动态规划+暴力递归)
  20. 【学习日记2023.4.25】之 前后端分离_前端工程化_Vue组件库Element_Vue路由_打包部署

热门文章

  1. matlab瓶盖盖严检查,口服液瓶盖密封性的质量检测方法你知道吗?
  2. 五一期间完成了某市交警系统的一个系统升级迁移项目
  3. 自然语言在公路交通各建设阶段运用
  4. 蓝桥杯嵌入式旧版子驱动问题-keil5下载卡死解决方法
  5. SSM社区医院卫生所病人患者随访信息管理javaweb网站系统设计与实现
  6. 常用的Unicode码表(汉字从A到Z、数字、英文)
  7. f和摄氏度怎么换算_华氏度和摄氏度的换算
  8. 01:电机控制的基本原理
  9. 零基础自学软件测试-项目经验-电商项目实战-测试用例设计-促销中心
  10. R语言绘制韦布尔分布图和泊松(Poisson)分布图,并为二项分布(泊松分布)绘制不同颜色