From f932978caf47fa501a2ab1e66c9cf0368f9fe401 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 6 Sep 2024 10:21:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8D=A3=E8=80=80=E5=AE=89=E5=8D=9314?= =?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=AE=89=E8=A3=85=E6=B8=B8=E6=88=8F=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E8=87=B3=E6=B5=8F=E8=A7=88=E5=99=A8=20https://jira.sh?= =?UTF-8?q?anqu.cc/browse/GHZSCY-6588?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/PackageInstaller.kt | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/gh/common/util/PackageInstaller.kt b/app/src/main/java/com/gh/common/util/PackageInstaller.kt index 4adca99154..21f5024da9 100644 --- a/app/src/main/java/com/gh/common/util/PackageInstaller.kt +++ b/app/src/main/java/com/gh/common/util/PackageInstaller.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.app.PendingIntent import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri import android.os.Build import androidx.appcompat.app.AppCompatActivity @@ -15,7 +16,6 @@ import com.gh.download.server.BrowserInstallHelper import com.gh.gamecenter.BuildConfig import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.CurrentActivityHolder import com.gh.gamecenter.core.utils.MD5Utils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.install.InstallService @@ -31,6 +31,15 @@ object PackageInstaller { private val listeners = mutableListOf() + private val packageInstallerPackageName = arrayOf( + "com.android.packageinstaller", + "com.miui.packageinstaller", + "com.google.android.packageinstaller", + "com.samsung.android.packageinstaller", + "com.lenovo", + "com.zhuoyi" + ) + /** * 为了兼容java代码 */ @@ -274,11 +283,27 @@ object PackageInstaller { } installIntent.setDataAndType(uri, "application/vnd.android.package-archive") } + + updateSystemInstallerIfAvailable(context, installIntent) + InstallUtils.getInstance() .addInstall(PackageUtils.getPackageNameByPath(context, path)) return installIntent } + /** + * 查找并设置系统安装器作为安装 intent 的包名 + */ + private fun updateSystemInstallerIfAvailable(context: Context, intent: Intent) { + for (rf in context.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)) { + val targetPackageName = packageInstallerPackageName.firstOrNull { rf.activityInfo.packageName.contains(it) } + if (!targetPackageName.isNullOrEmpty()) { + intent.setPackage(targetPackageName) + break + } + } + } + /** * 卸载应用 */