diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt index 7d614f0e4d39..65b73caeada7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt @@ -15,6 +15,7 @@ */ package com.android.settingslib.wifi +import android.content.ComponentName import android.content.Context import android.content.Intent import android.graphics.drawable.Drawable @@ -22,14 +23,23 @@ import android.icu.text.MessageFormat import android.net.wifi.ScanResult import android.net.wifi.WifiConfiguration import android.net.wifi.WifiConfiguration.NetworkSelectionStatus +import android.net.wifi.WifiManager import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo import android.os.Bundle import android.os.SystemClock import android.util.Log import androidx.annotation.VisibleForTesting +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope import com.android.settingslib.R import com.android.settingslib.flags.Flags.newStatusBarIcons import java.util.Locale +import kotlin.coroutines.resume +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.asExecutor +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext open class WifiUtils { @@ -146,7 +156,6 @@ open class WifiUtils { } } - @JvmStatic fun buildLoggingSummary(accessPoint: AccessPoint, config: WifiConfiguration?): String { val summary = StringBuilder() @@ -458,5 +467,40 @@ open class WifiUtils { arguments["count"] = connectedDevices return msgFormat.format(arguments) } + + @JvmStatic + fun checkWepAllowed( + context: Context, + lifecycleOwner: LifecycleOwner, + ssid: String, + onAllowed: () -> Unit, + ) { + lifecycleOwner.lifecycleScope.launch { + val wifiManager = context.getSystemService(WifiManager::class.java) ?: return@launch + if (wifiManager.queryWepAllowed()) { + onAllowed() + } else { + val intent = Intent(Intent.ACTION_MAIN).apply { + component = ComponentName( + "com.android.settings", + "com.android.settings.network.WepNetworkDialogActivity" + ) + putExtra(SSID, ssid) + } + context.startActivity(intent) + } + } + } + + private suspend fun WifiManager.queryWepAllowed(): Boolean = + withContext(Dispatchers.Default) { + suspendCancellableCoroutine { continuation -> + queryWepAllowed(Dispatchers.Default.asExecutor()) { + continuation.resume(it) + } + } + } + + const val SSID = "ssid" } } |