如何更正Android .apk?

时间:2018-05-25 12:52:32

标签: android android-intent 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设备中,但在高版本的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已经安装,没有任何'已完成'或者'打开'按钮。

谢谢!

0 个答案:

没有答案