summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2023-03-04 19:42:44 +0100
committerLuK1337 <priv.luk@gmail.com>2023-03-04 19:43:32 +0100
commitccb9039b2acdc123364ea91fc167da63410f6db9 (patch)
treec694b11ce94a627cf9273fdc25ff2130911c524e
parent0fe6fad97311b4962ac4c8683864a8a21f10daf8 (diff)
Aperture: Use WiFi QR parsing implementation from ZXing
Change-Id: I6ad62b000b145cb2ce965ec2d88d725c6f5a57c2
-rw-r--r--app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt28
1 files changed, 8 insertions, 20 deletions
diff --git a/app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt b/app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt
index 8195e74..0b8cbd0 100644
--- a/app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt
+++ b/app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt
@@ -8,7 +8,9 @@ package org.lineageos.aperture.utils
import android.net.wifi.WifiNetworkSuggestion
import android.os.Build
import androidx.annotation.RequiresApi
-import java.util.regex.Pattern
+import com.google.zxing.BarcodeFormat
+import com.google.zxing.Result
+import com.google.zxing.client.result.WifiResultParser
data class WifiNetwork(
val ssid: String,
@@ -50,32 +52,18 @@ data class WifiNetwork(
companion object {
fun fromQr(text: String): WifiNetwork? {
- val prefix = "WIFI:"
+ val result = WifiResultParser().parse(
+ Result(text, null, null, BarcodeFormat.QR_CODE)
+ ) ?: return null
- if (!text.uppercase().startsWith(prefix)) {
- return null
- }
-
- val regex = Regex("(?<!\\\\)" + Pattern.quote(";"))
- val data = text.substring(prefix.length).split(regex).mapNotNull {
- runCatching {
- with(it.split(":", limit = 2)) {
- this[0] to this[1]
- }
- }.getOrNull()
- }.toMap()
-
- val ssid = data["S"]?.replace("\\", "") ?: return null
- val isSsidHidden = data["H"] == "true"
- val password = data["P"]?.replace("\\", "")
- val encryptionType = when (data["T"]) {
+ val encryptionType = when (result.networkEncryption) {
"WEP" -> EncryptionType.WEP
"WPA" -> EncryptionType.WPA
"SAE" -> EncryptionType.SAE
else -> EncryptionType.NONE
}
- return WifiNetwork(ssid, isSsidHidden, password, encryptionType)
+ return WifiNetwork(result.ssid, result.isHidden, result.password, encryptionType)
}
}
}