diff options
author | LuK1337 <priv.luk@gmail.com> | 2023-03-04 19:42:44 +0100 |
---|---|---|
committer | LuK1337 <priv.luk@gmail.com> | 2023-03-04 19:43:32 +0100 |
commit | ccb9039b2acdc123364ea91fc167da63410f6db9 (patch) | |
tree | c694b11ce94a627cf9273fdc25ff2130911c524e | |
parent | 0fe6fad97311b4962ac4c8683864a8a21f10daf8 (diff) |
Aperture: Use WiFi QR parsing implementation from ZXing
Change-Id: I6ad62b000b145cb2ce965ec2d88d725c6f5a57c2
-rw-r--r-- | app/src/main/java/org/lineageos/aperture/utils/WifiNetwork.kt | 28 |
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) } } } |