Как исправить обновление Android .apk? - PullRequest
0 голосов
/ 25 мая 2018
    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;

Я обнаружил, что таким способом можно открыть действие, которое означает «Установить успех» на Android-устройстве с низкой SDK-версией, но в Hight-версии 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 был установлен, и никаких кнопок «Завершено» или «Открыть».

Спасибо!

...