尝试以编程方式安装APK时出错

问题描述

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...