Dedup resolvedActivity by packageName
This commit is contained in:
@@ -42,7 +42,7 @@ class TetherTimeoutMonitor(private val timeout: Long = 0,
|
|||||||
if (Build.VERSION.SDK_INT < 30) Resources.getSystem().run {
|
if (Build.VERSION.SDK_INT < 30) Resources.getSystem().run {
|
||||||
getInteger(getIdentifier("config_wifi_framework_soft_ap_timeout_delay", "integer", "android"))
|
getInteger(getIdentifier("config_wifi_framework_soft_ap_timeout_delay", "integer", "android"))
|
||||||
} else {
|
} else {
|
||||||
val info = WifiApManager.resolvedActivity.activityInfo
|
val info = WifiApManager.resolvedActivity
|
||||||
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
||||||
resources.getInteger(resources.findIdentifier(
|
resources.getInteger(resources.findIdentifier(
|
||||||
"config_wifiFrameworkSoftApShutDownTimeoutMilliseconds", "integer",
|
"config_wifiFrameworkSoftApShutDownTimeoutMilliseconds", "integer",
|
||||||
@@ -59,7 +59,7 @@ class TetherTimeoutMonitor(private val timeout: Long = 0,
|
|||||||
}
|
}
|
||||||
@get:RequiresApi(31)
|
@get:RequiresApi(31)
|
||||||
val defaultTimeoutBridged: Int get() = try {
|
val defaultTimeoutBridged: Int get() = try {
|
||||||
val info = WifiApManager.resolvedActivity.activityInfo
|
val info = WifiApManager.resolvedActivity
|
||||||
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
||||||
resources.getInteger(resources.findIdentifier(
|
resources.getInteger(resources.findIdentifier(
|
||||||
"config_wifiFrameworkSoftApShutDownIdleInstanceInBridgedModeTimeoutMillisecond", "integer",
|
"config_wifiFrameworkSoftApShutDownIdleInstanceInBridgedModeTimeoutMillisecond", "integer",
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package be.mygod.vpnhotspot.net.wifi
|
|||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.pm.ActivityInfo
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.content.pm.ResolveInfo
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.net.wifi.SoftApConfiguration
|
import android.net.wifi.SoftApConfiguration
|
||||||
import android.net.wifi.WifiManager
|
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
|
* 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)
|
@get:RequiresApi(30)
|
||||||
val resolvedActivity: ResolveInfo get() {
|
val resolvedActivity: ActivityInfo get() {
|
||||||
val list = app.packageManager.queryIntentActivities(Intent(ACTION_RESOURCES_APK),
|
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" }
|
require(list.isNotEmpty()) { "Missing $ACTION_RESOURCES_APK" }
|
||||||
if (list.size > 1) {
|
if (list.size > 1) {
|
||||||
list.singleOrNull {
|
list.singleOrNull {
|
||||||
it.activityInfo.applicationInfo.sourceDir.startsWith("/apex/com.android.wifi")
|
it.activityInfo.applicationInfo.sourceDir.startsWith("/apex/com.android.wifi")
|
||||||
}?.let { return it }
|
}?.let { return it.activityInfo }
|
||||||
Timber.w(Exception("Found > 1 apk: " + list.joinToString {
|
Timber.w(Exception("Found > 1 apk: " + list.joinToString {
|
||||||
val info = it.activityInfo.applicationInfo
|
val info = it.activityInfo.applicationInfo
|
||||||
"${info.packageName} (${info.sourceDir})"
|
"${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"
|
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"))
|
getBoolean(getIdentifier(CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED, "bool", "android"))
|
||||||
}
|
}
|
||||||
in 30..Int.MAX_VALUE -> @TargetApi(30) {
|
in 30..Int.MAX_VALUE -> @TargetApi(30) {
|
||||||
val info = resolvedActivity.activityInfo
|
val info = resolvedActivity
|
||||||
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
val resources = app.packageManager.getResourcesForApplication(info.applicationInfo)
|
||||||
resources.getBoolean(resources.findIdentifier(CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED, "bool",
|
resources.getBoolean(resources.findIdentifier(CONFIG_P2P_MAC_RANDOMIZATION_SUPPORTED, "bool",
|
||||||
RESOURCES_PACKAGE, info.packageName))
|
RESOURCES_PACKAGE, info.packageName))
|
||||||
|
|||||||
Reference in New Issue
Block a user