首页 > 解决方案 > 如何更正更新 Android .apk?

问题描述

    Intent openIntent;
    File file = new File(mApkPath);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        String auth = mContext.getPackageName() + ".file.provider";
        Uri apkUri = FileProvider.getUriForFile(mContext, auth, file);
        openIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
        openIntent.setData(apkUri);
        openIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } else {
        openIntent = new Intent(Intent.ACTION_VIEW);
        openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        openIntent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
    }
    return openIntent;

我发现这种方式可以在低 SDK 版本的 Android 设备中打开一个表示“安装成功”的 Activity,但在高 SDK 版本中,安装完成后,即使安装了新的 .apk,应用程序也会崩溃。

有什么方法可以打开“安装成功”的活动,让用户可以选择安装“完成”或“打开”?

顺便说一句,resultCode == RESULT_CANCELED实际上,我安装了新的 .apk。我注意到 PackageInstaller 可以用户更新 apk,但是如何使用它呢?我阅读了 ApiDemos 但result == PackageInstaller.STATUS_PENDING_USER_ACTION通过了int result = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_FAILURE),但 .apk 已安装并且没有任何“完成”或“打开”按钮。

谢谢!

标签: androidandroid-intentapk

解决方案


推荐阅读