android11安装第三方,Android Apk安装(兼容Android11 Api30)
Apk安装
Android11之前可通过 Intent.ACTION_INSTALL_PACKAGE 进行传递Apk的URI进行安装
但是在Android11版本 Intent.ACTION_INSTALL_PACKAGE 已标注弃用
同时推荐在Android5版本提供的PackageInstaller类进行安装
兼容到Android5.0
PackageInstaller
先看看该类的使用流程
Android Apk 安装.jpg
额外提示
通过该方式,不需要主动去申请App内安装Apk权限,PackageInstaller内置了该申请
代码实现
注意 该类启动模式为 栈顶单例
同时需配备一个 intent-filter
//注意 该类启动模式为 栈顶单例
class InstallActivity : AppCompatActivity() {
//intent-filter 的 action
private val ACTION_INSTALL = "cc.xiaobaicz.work.INSTALL_APK"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
install()
}
/**
* 安装
*/
private fun install() {
packageManager.packageInstaller.apply {
//生成参数
val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
//创建ID
val id = createSession(params)
//打开Session
val session = openSession(id)
//写入文件
writeAssetsApk2Session(session, "pbox.apk")
//新建IntentSender
val intent = createIntentSender()
//提交,进行安装
session.commit(intent)
}
}
/**
* 新建一个IntentSender用于接收结果
* 该例子通过当前页面接收
*/
private fun createIntentSender(): IntentSender {
val intent = Intent(this, MainActivity::class.java).apply {
action = ACTION_INSTALL
}
val pending = PendingIntent.getActivity(this, 0, intent, 0)
return pending.intentSender
}
//写入Apk到Session输出流,该例子 获取Assets内文件,可通过其他方式获取Apk流
private fun writeAssetsApk2Session(session: PackageInstaller.Session, s: String) {
assets.open(s).use { input ->
session.openWrite("apk", 0, -1).use { output ->
output.write(input.readBytes())
}
}
}
/**
* 接收安装结果
*/
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
intent ?: return
if (intent.action != ACTION_INSTALL) {
return
}
intent.extras?.apply {
when (this.getInt(PackageInstaller.EXTRA_STATUS)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
//提示用户进行安装
startActivity(this.get(Intent.EXTRA_INTENT) as Intent)
}
PackageInstaller.STATUS_SUCCESS -> {
//安装成功
}
else -> {
//失败信息
val msg = this.getString(PackageInstaller.EXTRA_STATUS_MESSAGE)
}
}
}
}
}
android11安装第三方,Android Apk安装(兼容Android11 Api30)相关推荐
- 一文看懂Android APK安装的原理
一文看懂Android APK安装的原理 前言 APK包的构成 安装APK 总结 前言 大家有没有想过一个应用的APK是怎么被安装到安卓手机上的,安装的本质是什么?我们知道,Windows应用程序的安 ...
- Android apk安装过程
Android安装包.APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或Android手机中执行即可安装. Android应用安装有如下四种方式 1 ...
- Android APK安装失败错误代码含义
Android APK安装失败错误代码含义 名称 value 描述 INSTALL_FAILED_ALREADY_EXISTS -1 已经安装 INSTALL_FAILED_INVALID_APK - ...
- android apk安装工具,APK安装器下载-APK安装器手机版下载v2.9-1 安卓版-西西软件下载...
APK安装器取代手机当中自带的APK安装器,让安装的界面在整体上面变得更加的好看,对于颜值有着极高要求的用户而言,虽然安装界面我们不一定能够经常的进行看到,但是界面的丑美也非常影响感官体验,感兴趣的话 ...
- PyCharm怎么安装第三方库? Pycharm安装python库的技巧
提示:PyCharm怎么安装第三方库?python中经常需要安装第三方库,安装的方法也有很多,今天我们就来看看使用Pycharm安装python库的技巧,详细请看下文 文章目录 前言 一.首先打开py ...
- android apk 安装流程
android系统中存在一个特殊的区域,在开机的时候,加载这块区域的信息,通过系统扫描这块区域,把对应的内容加载都内存中去,每个安装一个新的应用,就会重新更新此区域,这样就能保持最新的状态,这就是为什 ...
- android 安装多个apk,Android apk 安装相关的几个目录
一.几个关键目录 1./data/local/tmp /data/local/tmp 目录是转为android studio 安装应用程序保留的目录 android studio 安装apk时 首先将 ...
- 【SealDEV 倾情奉献】Android APK 安装过程详解
开发 Android 应用后,一般都会安装到手机上去运行,了解应用是如何安装到手机上的,可以更好的理解应用的本质,理解应用是如何运行的,在自己开发的应用遇到一些问题时,会从更深层次去分析,快速定位找到 ...
- 谷歌 G1 android APK安装器 离线安装软件
网友在购买Android手机时会发现T-Mobile G1自带了根USB转ExtUSB的数据线,但是并没有提供提供驱动光盘.Android手机网发现Google已经做好了G1的Windows版USB驱 ...
最新文章
- 临沂机器人火锅_临沂知名智能无人火锅前景
- node.js koa 实现长轮询
- C#中判断空字符串的3种方法性能分析
- 谜题 (Puzzle,ACM/ICPC World Finals 1993,UVa227)
- c primer plus(第五版)读书笔计 第二章(3)
- 小猿圈Java学习之通过命令行设置属性值
- html日历显示不完整,求html代码,显示日历和时间的代码
- 使用 VMControl 2.4 实现多网络的 Power 服务器捕捉和系统部署
- PPT(十)-动画基础知识学习
- Unity3d官方测试插件学习-单元测试,集成测试
- markdown编辑数学公式
- 长尾关键词是什么意思?如何使用5118挖掘和下载长尾词?
- AAAI2021联邦学习论文集
- 香橙派借助语音模块实现语音刷抖音
- python文件批量改名
- 【Matlab】求解微分方程{上}(通解和特解)
- 2022年小额贷款行业研究报告
- 首个可用于深度学习的ToF相关数据集——基于置信度的立体相机以及ToF相机深度图融合框架
- 直流亥姆霍兹线圈和交流亥姆霍兹线圈的区别
- Django的models无法生成新加的表
热门文章
- 关于阿里云服务器可以怎么选择地域
- PCB设计之EMC 47原则
- oracle library is not loaded解决方法
- 鲁宾逊非标准微积分与国内高等数学“秀肌肉”
- 常州刘国钧计算机专业,2020常州刘国钧高等职业技术学校的录取分数线
- python在数据分析方面的应用-数据分析应用方面Python和spss有什么区别?
- mysql rpm怎么用_linux下mysql(rpm)安装使用手册
- Nginx+Tomcat负载均衡和动静分离理论实操详解来袭!
- 利用自识别标记实现复杂场景下相机标定
- 怎么修改图片的kb大小?如何缩小照片kb?