我的 apk 当前更新的方式是通过新的 apk 在旧的 apk 上安装自身(同时不覆盖本地数据库或设置)。
因此,由于 Android 10(API 29)ACTION_VIEW已被弃用,所以这不再有效:
Intent intent = new Intent(Intent.ACTION_VIEW);
//output file is the apk downloaded earlier
intent.setDataAndType(Uri.fromFile(outputFile), "application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
根据我在互联网上找到的不同答案,我需要开始使用 PackageInstaller。看看 Android 文档中的演示,我发现:
Intent intent = new Intent(PSMentorActivity.this,InstallApkSessionApi.class);
intent.putExtra("apkFile",outputFile);
this.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
其中 InstallApkSessionApi 包含一个按钮,按下该按钮应启动安装窗口:
PackageInstaller packageInstaller = getPackageManager().getPackageInstaller();
PackageInstaller.SessionParams params = new
PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
int sessionId = packageInstaller.createSession(params);
session = packageInstaller.openSession(sessionId);
addApkToInstallSession(file, session);
// Create an install status receiver.
Context context = InstallApkSessionApi.this;
Intent intent = new Intent(context, InstallApkSessionApi.class);
intent.setAction(PACKAGE_INSTALLED_ACTION);
PendingIntent pendingIntent = …Run Code Online (Sandbox Code Playgroud)