BlacklistViewModel: Filter packages which are not apps
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
17
app/src/main/java/com/aurora/extensions/PackageInfo.kt
Normal file
17
app/src/main/java/com/aurora/extensions/PackageInfo.kt
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ import androidx.core.content.pm.PackageInfoCompat
|
|||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
|
import com.aurora.extensions.isApp
|
||||||
import com.aurora.store.data.model.Black
|
import com.aurora.store.data.model.Black
|
||||||
import com.aurora.store.data.providers.BlacklistProvider
|
import com.aurora.store.data.providers.BlacklistProvider
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
@@ -62,11 +63,7 @@ class BlacklistViewModel @Inject constructor(
|
|||||||
try {
|
try {
|
||||||
val packageInfoMap = PackageUtil.getPackageInfoMap(context)
|
val packageInfoMap = PackageUtil.getPackageInfoMap(context)
|
||||||
packageInfoMap.values
|
packageInfoMap.values
|
||||||
.filter {
|
.filter { it.isApp() }
|
||||||
it.packageName != null
|
|
||||||
&& it.versionName != null
|
|
||||||
&& it.applicationInfo != null
|
|
||||||
}
|
|
||||||
.forEach {
|
.forEach {
|
||||||
val black = Black(it.packageName).apply {
|
val black = Black(it.packageName).apply {
|
||||||
displayName = packageManager.getApplicationLabel(it.applicationInfo)
|
displayName = packageManager.getApplicationLabel(it.applicationInfo)
|
||||||
|
|||||||
Reference in New Issue
Block a user