Activity中实现
- 判断安卓SDK版本
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
- 判断是否有未知源安装权限
// 此方法返回是否有未知源安装权限,true进行apk安装,false进行未知源安装权限申请
val boolean=packageManager.canRequestPackageInstalls()
- 申请未知源安装权限
val intent = Intent(
Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,
Uri.parse("package:${activity.packageName}")
);
activity.startActivityForResult(intent, 1)
- 执行安装方法
private fun installApk(apkUrl: String) {
val intent = Intent(Intent.ACTION_VIEW)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
val file = File(apkUrl)
val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
FileProvider.getUriForFile(
activity,
activity.packageName + ".provider",
file
)
else
Uri.fromFile(file)
intent.setDataAndType(uri, "application/vnd.android.package-archive")
startActivity(intent)
}