AppInstaller: Check if microG services enable app installer or not

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2026-04-08 17:14:20 +08:00
parent a1d15f16bd
commit 2d6f2168c8
2 changed files with 21 additions and 5 deletions

View File

@@ -25,7 +25,10 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat
import com.aurora.Constants.PACKAGE_NAME_GMS
import com.aurora.Constants.PACKAGE_NAME_PLAY_STORE
import com.aurora.extensions.getUpdateOwnerPackageNameCompat
import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isPAndAbove
@@ -36,7 +39,6 @@ import com.aurora.store.data.installer.base.IInstaller
import com.aurora.store.data.model.Installer
import com.aurora.store.data.model.InstallerInfo
import com.aurora.store.util.PackageUtil
import com.aurora.store.util.PackageUtil.hasMicroGCompanion
import com.aurora.store.util.Preferences
import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID
import com.topjohnwu.superuser.Shell
@@ -79,7 +81,7 @@ class AppInstaller @Inject constructor(
if (hasAuroraService(context)) ServiceInstaller.installerInfo else null,
if (hasAppManager(context)) AMInstaller.installerInfo else null,
if (hasShizukuOrSui(context)) ShizukuInstaller.installerInfo else null,
if (hasMicroGCompanion(context)) MicroGInstaller.installerInfo else null
if (hasMicroGInstaller(context)) MicroGInstaller.installerInfo else null
)
/**
@@ -150,6 +152,21 @@ class AppInstaller @Inject constructor(
false
}
fun hasMicroGInstaller(context: Context): Boolean {
if (!PackageUtil.hasMicroGCompanion(context)) return false
return try {
val metadata = PackageUtil.getPackageInfo(
context,
PACKAGE_NAME_GMS,
PackageManager.GET_META_DATA
).applicationInfo?.metaData
metadata?.getBoolean("org.microg.gms.settings.vending_apps_install", false) ?: false
} catch (_: Exception) {
false
}
}
fun hasAppManager(context: Context): Boolean =
PackageUtil.isInstalled(context, AMInstaller.AM_PACKAGE_NAME) or
PackageUtil.isInstalled(context, AMInstaller.AM_DEBUG_PACKAGE_NAME)
@@ -202,7 +219,7 @@ class AppInstaller @Inject constructor(
defaultInstaller
}
Installer.MICROG -> if (hasMicroGCompanion(context)) {
Installer.MICROG -> if (hasMicroGInstaller(context)) {
microGInstaller
} else {
defaultInstaller

View File

@@ -31,7 +31,6 @@ import com.aurora.store.data.installer.base.InstallerBase
import com.aurora.store.data.model.Installer
import com.aurora.store.data.model.InstallerInfo
import com.aurora.store.data.room.download.Download
import com.aurora.store.util.PackageUtil.hasMicroGCompanion
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import javax.inject.Singleton
@@ -69,7 +68,7 @@ class MicroGInstaller @Inject constructor(
Log.i(TAG, "${download.packageName} already queued")
}
hasMicroGCompanion(context) -> {
AppInstaller.hasMicroGInstaller(context) -> {
Log.i(TAG, "Received microG install request for ${download.packageName}")
val files = getFiles(download.packageName, download.versionCode)