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.content.pm.PackageManager
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat 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.getUpdateOwnerPackageNameCompat
import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isPAndAbove 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.Installer
import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.model.InstallerInfo
import com.aurora.store.util.PackageUtil 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
import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID
import com.topjohnwu.superuser.Shell import com.topjohnwu.superuser.Shell
@@ -79,7 +81,7 @@ class AppInstaller @Inject constructor(
if (hasAuroraService(context)) ServiceInstaller.installerInfo else null, if (hasAuroraService(context)) ServiceInstaller.installerInfo else null,
if (hasAppManager(context)) AMInstaller.installerInfo else null, if (hasAppManager(context)) AMInstaller.installerInfo else null,
if (hasShizukuOrSui(context)) ShizukuInstaller.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 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 = fun hasAppManager(context: Context): Boolean =
PackageUtil.isInstalled(context, AMInstaller.AM_PACKAGE_NAME) or PackageUtil.isInstalled(context, AMInstaller.AM_PACKAGE_NAME) or
PackageUtil.isInstalled(context, AMInstaller.AM_DEBUG_PACKAGE_NAME) PackageUtil.isInstalled(context, AMInstaller.AM_DEBUG_PACKAGE_NAME)
@@ -202,7 +219,7 @@ class AppInstaller @Inject constructor(
defaultInstaller defaultInstaller
} }
Installer.MICROG -> if (hasMicroGCompanion(context)) { Installer.MICROG -> if (hasMicroGInstaller(context)) {
microGInstaller microGInstaller
} else { } else {
defaultInstaller 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.Installer
import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.model.InstallerInfo
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.util.PackageUtil.hasMicroGCompanion
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -69,7 +68,7 @@ class MicroGInstaller @Inject constructor(
Log.i(TAG, "${download.packageName} already queued") Log.i(TAG, "${download.packageName} already queued")
} }
hasMicroGCompanion(context) -> { AppInstaller.hasMicroGInstaller(context) -> {
Log.i(TAG, "Received microG install request for ${download.packageName}") Log.i(TAG, "Received microG install request for ${download.packageName}")
val files = getFiles(download.packageName, download.versionCode) val files = getFiles(download.packageName, download.versionCode)