Android: connexion automatique en wifi

Fermé
Utilisateur anonyme - Modifié par JuLiEn_89 le 28/02/2014 à 12:30
Bonjour,
J'ai créé un programme pour établir une connexion entre un device android et un point d'accès wifi, mais il plante après son démarrage. Pouvez-vous m'éclairer ? Merci :)


package com.example.wificonnect;

import java.util.List;
import android.app.Activity;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.content.Context;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Définition du réseau wifi auquel on se connecte
String networkSSID = "robert";
String networkPass = "miche";

// Configuration des paramètres de connexion
WifiConfiguration conf = new WifiConfiguration();
// WEP
conf.SSID = "\"" + networkSSID + "\""; // SSID doit être entre quotes
conf.wepKeys[0] = "\"" + networkPass + "\"";
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
// WPA
conf.preSharedKey = "\"" + networkPass + "\"";
// Réseau ouvert
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

// Ajout à Android avec les paramètres du manager
WifiManager wifiManager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
// Activation du wifi si pas encore activé
if(wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
else {
wifiManager.setWifiEnabled(true);
}

wifiManager.addNetwork(conf);

// Activation pour qu'Android puisse se connecter
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
}

J'ai également autorisé tout cela dans le manifest:


<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>