小编Tha*_*ath的帖子

Android 10 - 使用 PackageManager 安装新版本的 apk 而不是 Intents 并没有真正起作用

我的 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)

java android android-intent android-10.0

8
推荐指数
2
解决办法
8905
查看次数

标签 统计

android ×1

android-10.0 ×1

android-intent ×1

java ×1