问题描述
在this之后,我下载apk后安装apk的代码是:
var downloadIntent: Intent;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val apkFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"update.apk")
val contentUri = FileProvider.getUriForFile(appContext,"${activity?.packageName}.fileprovider",apkFile)
downloadIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
downloadIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
downloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
downloadIntent.setDataAndType(contentUri,"application/vnd.android.package-archive")
}
appContext.startActivity(downloadIntent);
这是清单:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
...
<provider
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true"
android:name="androidx.core.content.FileProvider">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
结果是程序包安装程序无提示停止。
解决方法
由于@Selvin,标志必须这样设置:
downloadIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION