From 629d0c4b16d0505b508c2cc82e628c71a4de8745 Mon Sep 17 00:00:00 2001 From: Mygod Date: Sat, 15 Apr 2023 09:17:58 -0400 Subject: [PATCH] Dedup resolvedActivity by packageName --- .../vpnhotspot/net/monitor/TetherTimeoutMonitor.kt | 4 ++-- .../be/mygod/vpnhotspot/net/wifi/WifiApManager.kt | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TetherTimeoutMonitor.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TetherTimeoutMonitor.kt index 9823f7d2..7bf794ee 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TetherTimeoutMonitor.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/TetherTimeoutMonitor.kt @@ -42,7 +42,7 @@ class TetherTimeoutMonitor(private val timeout: Long = 0, if (Build.VERSION.SDK_INT < 30) Resources.getSystem().run { getInteger(getIdentifier("config_wifi_framework_soft_ap_timeout_delay", "integer", "android")) } else { - val info = WifiApManager.resolvedActivity.activityInfo + val info = WifiApManager.resolvedActivity val resources = app.packageManager.getResourcesForApplication(info.applicationInfo) resources.getInteger(resources.findIdentifier( "config_wifiFrameworkSoftApShutDownTimeoutMilliseconds", "integer", @@ -59,7 +59,7 @@ class TetherTimeoutMonitor(private val timeout: Long = 0, } @get:RequiresApi(31) val defaultTimeoutBridged: Int get() = try { - val info = WifiApManager.resolvedActivity.activityInfo + val info = WifiApManager.resolvedActivity val resources = app.packageManager.getResourcesForApplication(info.applicationInfo) resources.getInteger(resources.findIdentifier( "config_wifiFrameworkSoftApShutDownIdleInstanceInBridgedModeTimeoutMillisecond", "integer", diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApManager.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApManager.kt index 0a352762..fd0bb428 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApManager.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApManager.kt @@ -2,8 +2,8 @@ package be.mygod.vpnhotspot.net.wifi import android.annotation.TargetApi import android.content.Intent +import android.content.pm.ActivityInfo import android.content.pm.PackageManager -import android.content.pm.ResolveInfo import android.content.res.Resources import android.net.wifi.SoftApConfiguration import android.net.wifi.WifiManager @@ -31,20 +31,20 @@ object WifiApManager { * Based on: https://cs.android.com/android/platform/superproject/+/master:packages/modules/Wifi/framework/java/android/net/wifi/WifiContext.java;l=66;drc=5ca657189aac546af0aafaba11bbc9c5d889eab3 */ @get:RequiresApi(30) - val resolvedActivity: ResolveInfo get() { + val resolvedActivity: ActivityInfo get() { val list = app.packageManager.queryIntentActivities(Intent(ACTION_RESOURCES_APK), - PackageManager.MATCH_SYSTEM_ONLY) + PackageManager.MATCH_SYSTEM_ONLY).distinctBy { it.activityInfo.applicationInfo.packageName } require(list.isNotEmpty()) { "Missing $ACTION_RESOURCES_APK" } if (list.size > 1) { list.singleOrNull { it.activityInfo.applicationInfo.sourceDir.startsWith("/apex/com.android.wifi") - }?.let { return it } + }?.let { return it.activityInfo } Timber.w(Exception("Found > 1 apk: " + list.joinToString { val info = it.activityInfo.applicationInfo "${info.packageName} (${info.sourceDir})" })) } - return list[0] + return list[0].activityInfo } private const val CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED = "config_wifi_p2p_mac_randomization_supported" @@ -54,7 +54,7 @@ object WifiApManager { getBoolean(getIdentifier(CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED, "bool", "android")) } in 30..Int.MAX_VALUE -> @TargetApi(30) { - val info = resolvedActivity.activityInfo + val info = resolvedActivity val resources = app.packageManager.getResourcesForApplication(info.applicationInfo) resources.getBoolean(resources.findIdentifier(CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED, "bool", RESOURCES_PACKAGE, info.packageName))