Skip to content

Commit 2a0e47f

Browse files
committed
more pretty
1 parent de8601c commit 2a0e47f

File tree

2 files changed

+22
-2
lines changed
  • BetterVerboseWiFiLogging/src/main/java/de/binarynoise/betterVerboseWiFiLogging
  • reflection/src/main/java/de/binarynoise/reflection

2 files changed

+22
-2
lines changed

BetterVerboseWiFiLogging/src/main/java/de/binarynoise/betterVerboseWiFiLogging/Hook.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import de.binarynoise.betterVerboseWiFiLogging.WifiEntry.getWifiInfoDescription
1010
import de.binarynoise.betterVerboseWiFiLogging.WifiEntry.newGetWifiInfoDescription
1111
import de.binarynoise.betterVerboseWiFiLogging.WifiEntry.wifiEntryClass
1212
import de.binarynoise.betterVerboseWiFiLogging.Wrapper.classLoader
13+
import de.binarynoise.reflection.cast
1314
import de.robv.android.xposed.IXposedHookLoadPackage
1415
import de.robv.android.xposed.XposedBridge
1516
import de.robv.android.xposed.XposedHelpers
@@ -66,9 +67,9 @@ class Hook : IXposedHookLoadPackage {
6667

6768
result = listOf(
6869
newGetWifiInfoDescription(wifiEntry),
69-
getNetworkCapabilityDescription.invoke(wifiEntry) as String?, // can stay as is
70+
getNetworkCapabilityDescription.invoke(wifiEntry)?.cast<String>()?.replace(":", ":\u00A0"), // can stay as is
7071
newGetScanResultDescription(wifiEntry),
71-
getNetworkSelectionDescription.invoke(wifiEntry) as String?, // TODO
72+
getNetworkSelectionDescription.invoke(wifiEntry)?.cast<String?>(), // TODO
7273
).filterNot { it.isNullOrBlank() }.joinToString(",\n").trim()
7374
}
7475
}

reflection/src/main/java/de/binarynoise/reflection/Reflection.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,22 @@ class method(private val cls: Class<*>, private vararg val params: Class<*>) {
4141
}
4242

4343
fun <T : AccessibleObject> T.makeAccessible(): T = apply { isAccessible = true }
44+
45+
/**
46+
* Casts the object to T.
47+
* If T is nullable, a safe cast is performed.
48+
*/
49+
@Suppress("UNCHECKED_CAST")
50+
inline fun <reified T> Any.cast(): T {
51+
return when {
52+
null is T -> {
53+
// T is nullable. Use safe cast.
54+
// Casting as T again is needed because compiler doesn't know in advance that T is nullable and complains otherwise.
55+
(this as? T) as T
56+
}
57+
else -> {
58+
// T is not nullable. Use direct cast.
59+
this as T
60+
}
61+
}
62+
}

0 commit comments

Comments
 (0)