Je souhaite concevoir une application qui affiche une liste des réseaux Wi-Fi disponibles et me connecter au réseau sélectionné par l'utilisateur.
J'ai implémenté la partie montrant les résultats de l'analyse. Maintenant, je veux me connecter à un réseau particulier sélectionné par l'utilisateur dans la liste des résultats de l'analyse.
Comment puis-je faire cela?
android
android-wifi
wifimanager
Vikram Gupta
la source
la source
Réponses:
Vous devez créer une
WifiConfiguration
instance comme celle-ci:Ensuite, pour le réseau WEP, vous devez procéder comme suit:
Pour le réseau WPA, vous devez ajouter une phrase secrète comme ceci:
Pour le réseau ouvert, vous devez faire ceci:
Ensuite, vous devez l'ajouter aux paramètres du gestionnaire wifi Android:
Et enfin, vous devrez peut-être l'activer, afin que Android s'y connecte:
UPD: En cas de WEP, si votre mot de passe est en hexadécimal, vous n'avez pas besoin de l'entourer de guillemets.
la source
La réponse précédente fonctionne , mais la solution peut en fait être plus simple. Il n'est pas nécessaire de parcourir la liste des réseaux configurés car vous obtenez l'ID réseau lorsque vous ajoutez le réseau via le WifiManager.
Ainsi, la solution complète et simplifiée ressemblerait à ceci:
la source
CHANGE_WIFI_STATE
autorisation est nécessaire.Référez-vous à: https://developer.android.com/reference/android/net/wifi/ScanResult.html#capabilities
Il existe trois types de réseaux WIFI.
Tout d'abord, instanciez un objet WifiConfiguration et remplissez le SSID du réseau (notez qu'il doit être mis entre guillemets), définissez l'état initial sur désactivé et spécifiez la priorité du réseau (les nombres autour de 40 semblent bien fonctionner).
Maintenant, pour la partie la plus compliquée: nous devons remplir plusieurs membres de WifiConfiguration pour spécifier le mode de sécurité du réseau. Pour les réseaux ouverts.
Pour les réseaux utilisant WEP; notez que la clé WEP est également placée entre guillemets.
Pour les réseaux utilisant WPA et WPA2, nous pouvons définir les mêmes valeurs pour les deux.
Enfin, nous pouvons ajouter le réseau à la liste connue du WifiManager
la source
Crédit à @ raji-ramamoorthi & @kenota
La solution qui a fonctionné pour moi est la combinaison des contributeurs ci-dessus dans ce fil.
Pour arriver
ScanResult
ici, c'est le processus.Avisez
unregister
-leonPause
etonStop
vivez celaunregisterReceiver(broadcastReceiver);
la source
Si votre appareil connaît les configurations Wifi (déjà stockées), nous pouvons contourner la science des fusées. Il suffit de parcourir les configurations pour vérifier si le SSID correspond. Si oui, connectez-vous et revenez .
Définissez les autorisations:
Relier:
la source
Je me suis cassé la tête pour comprendre pourquoi vos réponses pour WPA / WPA2 ne fonctionnent pas ... après des heures d'essais, j'ai trouvé ce qui vous manquait:
est REQUIS pour les réseaux WPA !!!!
Maintenant ça marche :)
la source
Il s'agit d'une activité que vous pouvez sous-classer pour forcer la connexion à un wifi spécifique: https://github.com/zoltanersek/android-wifi-activity/blob/master/app/src/main/java/com/zoltanersek/androidwifiactivity/ WifiActivity.java
Vous devrez sous-classer cette activité et implémenter ses méthodes:
la source
Dans l'API niveau 29, la
WifiManager.enableNetwork()
méthode est obsolète . Selon la documentation de l'API Android (vérifiez ici ):À partir du niveau 29 de l'API, pour vous connecter au réseau WiFi, vous devrez utiliser
WifiNetworkSpecifier
. Vous pouvez trouver un exemple de code sur https://developer.android.com/reference/android/net/wifi/WifiNetworkSpecifier.Builder.html#build ()la source
J'ai également essayé de me connecter au réseau. Aucune des solutions proposées ci-dessus ne fonctionne pour le hugerock t70. Fonction wifiManager.disconnect (); ne se déconnecte pas du réseau actuel. Par conséquent, vous ne pouvez pas vous reconnecter au réseau spécifié. J'ai modifié le code ci-dessus. Pour moi, le code bolow fonctionne parfaitement:
la source
UID nnnnn does not have permission to update configuration xxxx. MD_START_CONNECT but no requests and connected, but app does not have sufficient permissions, bailing.
Essayez cette méthode. C'est très facile:
la source