diff --git a/app/src/main/java/com/rosan/dhizuku/data/common/util/PackageInfoUtil.kt b/app/src/main/java/com/rosan/dhizuku/data/common/util/PackageInfoUtil.kt index 1173d41..8a40c2e 100644 --- a/app/src/main/java/com/rosan/dhizuku/data/common/util/PackageInfoUtil.kt +++ b/app/src/main/java/com/rosan/dhizuku/data/common/util/PackageInfoUtil.kt @@ -9,11 +9,12 @@ fun PackageManager.getPackageNameForUid(uid: Int): String? = fun PackageManager.getPackageInfoForUid( uid: Int, - flags: Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) PackageManager.GET_SIGNING_CERTIFICATES - else PackageManager.GET_SIGNATURES -): PackageInfo? { - return getPackageInfo(getPackageNameForUid(uid) ?: return null, flags) -} + flags: Int = (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) PackageManager.MATCH_UNINSTALLED_PACKAGES + else 0) or (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) PackageManager.GET_SIGNING_CERTIFICATES + else PackageManager.GET_SIGNATURES) +): PackageInfo? = kotlin.runCatching { + getPackageInfo(getPackageNameForUid(uid) ?: return null, flags) +}.getOrNull() @OptIn(ExperimentalStdlibApi::class) val PackageInfo.signature: String? diff --git a/app/src/main/java/com/rosan/dhizuku/server/RunningService.kt b/app/src/main/java/com/rosan/dhizuku/server/RunningService.kt index b178375..c0214ca 100644 --- a/app/src/main/java/com/rosan/dhizuku/server/RunningService.kt +++ b/app/src/main/java/com/rosan/dhizuku/server/RunningService.kt @@ -26,9 +26,9 @@ class RunningService : Service(), KoinComponent { companion object { fun start(context: Context) { val intent = Intent(context, RunningService::class.java) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) context.startForegroundService(intent) - else context.startService(intent) + else */context.startService(intent) } } diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/activate/ActivateViewModel.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/activate/ActivateViewModel.kt index d340625..600f7f4 100644 --- a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/activate/ActivateViewModel.kt +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/activate/ActivateViewModel.kt @@ -65,9 +65,9 @@ class ActivateViewModel : ViewModel(), KoinComponent { collectDataJob = viewModelScope.launch(Dispatchers.IO) { // http://aospxref.com/android-14.0.0_r2/xref/packages/apps/Settings/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java#271 - var flags = PackageManager.GET_META_DATA - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - flags = flags or PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS + val flags = + (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) PackageManager.MATCH_UNINSTALLED_PACKAGES + else 0) or PackageManager.GET_META_DATA val data = packageManager.queryBroadcastReceivers( Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED), diff --git a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/app_management/AppManagementViewModel.kt b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/app_management/AppManagementViewModel.kt index 1128d0b..92ecb7a 100644 --- a/app/src/main/java/com/rosan/dhizuku/ui/page/settings/app_management/AppManagementViewModel.kt +++ b/app/src/main/java/com/rosan/dhizuku/ui/page/settings/app_management/AppManagementViewModel.kt @@ -2,6 +2,7 @@ package com.rosan.dhizuku.ui.page.settings.app_management import android.content.Context import android.content.pm.PackageManager +import android.os.Build import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue @@ -44,8 +45,11 @@ class AppManagementViewModel : ViewModel(), KoinComponent { collectRepoJob?.cancel() collectRepoJob = viewModelScope.launch(Dispatchers.IO) { repo.flowAll().collect { + val flags = + (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) PackageManager.MATCH_UNINSTALLED_PACKAGES + else 0) or PackageManager.GET_META_DATA or PackageManager.GET_PERMISSIONS val data = packageManager - .getInstalledPackages(PackageManager.GET_META_DATA or PackageManager.GET_PERMISSIONS) + .getInstalledPackages(flags) .mapNotNull { packageInfo -> if (packageInfo.packageName == context.packageName) return@mapNotNull null val applicationInfo =