You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓中通过代码安装.apk时如何获取安装成功/失败的回调

安卓APK安装操作的回调获取方案

你可以通过系统提供的安装结果返回能力获取安装成功/失败的状态,具体实现分为两种:

1. startActivityForResult 实现(兼容低版本系统)

将原有startActivity替换为带请求码的启动方式:

// 自定义安装请求常量
private const val REQUEST_INSTALL_APK = 1001

// 启动安装的代码修改为
val installIntent = Intent(Intent.ACTION_VIEW)
installIntent.setDataAndType(localUri, "application/vnd.android.package-archive")
installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) // 适配部分高版本系统要求
startActivityForResult(installIntent, REQUEST_INSTALL_APK)

重写onActivityResult接收安装结果:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_INSTALL_APK) {
        when(resultCode) {
            Activity.RESULT_OK -> {
                // 安装成功
            }
            Activity.RESULT_CANCELED -> {
                // 安装终止,包含两种情况:用户主动取消安装、APK解析错误等安装失败场景
                // 可提前校验下载APK的完整性(文件大小、MD5和服务端下发值是否匹配)区分两类原因:校验不通过则为解析错误,校验通过则为用户主动取消
            }
        }
    }
}

2. Activity Result API 实现(AndroidX 项目优先使用)

先注册安装结果回调:

private val installApkLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    when(result.resultCode) {
        Activity.RESULT_OK -> {
            // 安装成功
        }
        Activity.RESULT_CANCELED -> {
            // 安装终止/失败
        }
    }
}

启动安装时调用launch方法:

val installIntent = Intent(Intent.ACTION_VIEW)
installIntent.setDataAndType(localUri, "application/vnd.android.package-archive")
installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
installApkLauncher.launch(installIntent)

偶现解析包错误优化建议

绝大多数解析包错误是下载过程中APK文件损坏导致,可在启动安装前增加两层校验:

  • 校验下载完成的APK文件大小和服务端返回的Content-Length是否一致
  • 校验APK的MD5/SHA1值和服务端下发的校验值是否匹配,不匹配则自动触发重新下载,可解决90%以上的偶现解析错误问题

内容的提问来源于stack exchange,提问作者AlexAndro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:18:01