From 05d9f279c93100ddfd84e164a500dd1f912a61d5 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 17 Jun 2024 18:54:46 +0530 Subject: [PATCH] BlacklistViewModel: Filter packages which are not apps Signed-off-by: Aayush Gupta --- .../java/com/aurora/extensions/PackageInfo.kt | 17 +++++++++++++++++ .../store/viewmodel/all/BlacklistViewModel.kt | 7 ++----- 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/aurora/extensions/PackageInfo.kt diff --git a/app/src/main/java/com/aurora/extensions/PackageInfo.kt b/app/src/main/java/com/aurora/extensions/PackageInfo.kt new file mode 100644 index 000000000..5abd85346 --- /dev/null +++ b/app/src/main/java/com/aurora/extensions/PackageInfo.kt @@ -0,0 +1,17 @@ +package com.aurora.extensions + +import android.content.pm.PackageInfo +import android.os.Process + +fun PackageInfo.isApp(): Boolean { + if (this.applicationInfo == null) return false + + return when { + isQAndAbove() -> { + Process.isApplicationUid(this.applicationInfo.uid) && + !this.applicationInfo.isResourceOverlay && !this.isApex + } + isNAndAbove() -> Process.isApplicationUid(this.applicationInfo.uid) + else -> this.packageName != null && this.versionName != null + } +} diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/BlacklistViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/BlacklistViewModel.kt index d6a573517..7c3678ba1 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/BlacklistViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/BlacklistViewModel.kt @@ -26,6 +26,7 @@ import androidx.core.content.pm.PackageInfoCompat import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.aurora.extensions.isApp import com.aurora.store.data.model.Black import com.aurora.store.data.providers.BlacklistProvider import com.aurora.store.util.PackageUtil @@ -62,11 +63,7 @@ class BlacklistViewModel @Inject constructor( try { val packageInfoMap = PackageUtil.getPackageInfoMap(context) packageInfoMap.values - .filter { - it.packageName != null - && it.versionName != null - && it.applicationInfo != null - } + .filter { it.isApp() } .forEach { val black = Black(it.packageName).apply { displayName = packageManager.getApplicationLabel(it.applicationInfo)