WifiHelper

class WifiHelper(context: Context)(source)

Helper Wi-Fi centralisé.

Permissions requises :

  • ACCESS_WIFI_STATE → état et infos réseau

  • CHANGE_WIFI_STATE → activer/désactiver (API < 29 seulement)

  • ACCESS_FINE_LOCATION → scan des réseaux (requis par Android)

Nota : sur API 29+, activer/désactiver le Wi-Fi via l'app n'est plus possible — openWifiSettings redirige vers les réglages système.

Enregistrement Koin :

single { WifiHelper(androidContext()) }

Utilisation :

val state = wifiHelper.getState()
val info = wifiHelper.getCurrentNetworkInfo()

wifiHelper.stateFlow.onEach { … }.launchIn(viewModelScope)

wifiHelper.scanFlow()
.onEach { results -> showNetworks(results) }
.launchIn(viewModelScope)

Constructors

Link copied to clipboard
constructor(context: Context)

Properties

Link copied to clipboard
@get:RequiresPermission(value = "android.permission.ACCESS_WIFI_STATE")
val stateFlow: Flow<WifiState>

Functions

Link copied to clipboard
@RequiresPermission(allOf = ["android.permission.ACCESS_WIFI_STATE", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_NETWORK_STATE"])
fun getCurrentNetworkInfo(): WifiNetworkInfo?
Link copied to clipboard
@RequiresPermission(value = "android.permission.ACCESS_WIFI_STATE")
fun getState(): WifiState
Link copied to clipboard
@RequiresPermission(value = "android.permission.ACCESS_WIFI_STATE")
fun isEnabled(): Boolean
Link copied to clipboard

Sur API 29+, redirige vers les réglages — modification programmatique interdite.

Link copied to clipboard
@RequiresPermission(allOf = ["android.permission.ACCESS_WIFI_STATE", "android.permission.ACCESS_FINE_LOCATION", "android.permission.CHANGE_WIFI_STATE"])
fun scanFlow(): Flow<List<ScanResult>>

Flow émettant la liste des réseaux Wi-Fi découverts à chaque scan. Chaque émission est déclenchée par WifiManager.startScan.