11package de.binarynoise.betterVerboseWiFiLogging
22
3+ import java.lang.reflect.Method
34import android.net.wifi.ScanResult
45import android.net.wifi.WifiConfiguration
56import android.net.wifi.WifiInfo
@@ -8,6 +9,8 @@ import de.binarynoise.betterVerboseWiFiLogging.WifiEntry.mWifiInfoField
89import de.binarynoise.betterVerboseWiFiLogging.Wrapper.classLoader
910import de.binarynoise.reflection.findDeclaredField
1011import de.binarynoise.reflection.findDeclaredMethod
12+ import de.binarynoise.reflection.findDeclaredMethodOrNull
13+ import de.robv.android.xposed.XposedHelpers
1114import org.lsposed.hiddenapibypass.HiddenApiBypass
1215
1316const val wifitrackerlib = " com.android.wifitrackerlib"
@@ -17,11 +20,11 @@ object Wrapper {
1720}
1821
1922object BaseWifiTracker {
20- val baseWiFiTrackerClass: Class <* > = classLoader.loadClass(" $wifitrackerlib .BaseWifiTracker" )
21-
2223 fun isVerboseLoggingEnabled (): Boolean {
23- if (Build .VERSION .SDK_INT < 34 ) return baseWiFiTrackerClass.getDeclaredMethod(" isVerboseLoggingEnabled" ).invoke(null ) as Boolean
24- else {
24+ if (Build .VERSION .SDK_INT < 34 ) {
25+ val baseWiFiTrackerClass: Class <* > = XposedHelpers .findClass(" $wifitrackerlib .BaseWifiTracker" , classLoader)
26+ return baseWiFiTrackerClass.getDeclaredMethod(" isVerboseLoggingEnabled" ).invoke(null ) as Boolean
27+ } else {
2528 // that actually is the fix, the original code doesn't check for this either anymore
2629 // https://cs.android.com/android/_/android/platform/frameworks/opt/net/wifi/+/main:libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java;l=529;bpv=0;bpt=0
2730 return true
@@ -201,8 +204,8 @@ val channelMap = mapOf(
201204object WifiEntry {
202205 val wifiEntryClass: Class <* > = classLoader.loadClass(" $wifitrackerlib .WifiEntry" )
203206
204- // TODO: check inline in SystemUI
205- val getWifiInfoDescription = wifiEntryClass.findDeclaredMethod (" getWifiInfoDescription" )
207+ // inlined by r8 in SystemUI
208+ val getWifiInfoDescription: Method ? = wifiEntryClass.findDeclaredMethodOrNull (" getWifiInfoDescription" )
206209
207210 private const val CONNECTED_STATE_CONNECTED = 2
208211 fun newGetWifiInfoDescription (wifiEntry : Any ): String {
@@ -232,7 +235,29 @@ object WifiEntry {
232235 }
233236 }
234237
235- val getNetworkCapabilityDescription = wifiEntryClass.findDeclaredMethod(" getNetworkCapabilityDescription" )
238+ val getNetworkCapabilityDescription = wifiEntryClass.findDeclaredMethodOrNull(" getNetworkCapabilityDescription" )
239+
240+ /* *
241+ * Fallback for getNetworkCapabilityDescription when it is inlined by r8
242+ */
243+ fun getNetworkCapabilityDescriptionFallback (wifiEntry : Any ): String? {
244+ val getConnectedState = wifiEntryClass.findDeclaredMethodOrNull(" getConnectedState" ) ? : return null
245+ val hasInternetAccess = wifiEntryClass.findDeclaredMethodOrNull(" hasInternetAccess" ) ? : return null
246+ val isDefaultNetwork = wifiEntryClass.findDeclaredMethodOrNull(" isDefaultNetwork" ) ? : return null
247+ val isLowQuality = wifiEntryClass.findDeclaredMethodOrNull(" isLowQuality" ) ? : return null
248+
249+ return buildString {
250+ if (getConnectedState(wifiEntry) == CONNECTED_STATE_CONNECTED ) {
251+ append(" hasInternet:" )
252+ append(hasInternetAccess(wifiEntry))
253+ append(" , isDefaultNetwork:" )
254+ append(isDefaultNetwork(wifiEntry))
255+ append(" , isLowQuality:" )
256+ append(isLowQuality(wifiEntry))
257+ }
258+ }
259+ }
260+
236261 val getNetworkSelectionDescription = wifiEntryClass.findDeclaredMethod(" getNetworkSelectionDescription" )
237262
238263 val getScanResultDescription = wifiEntryClass.findDeclaredMethod(" getScanResultDescription" ) // -> StandardWifiEntry
0 commit comments