2013-12-23 91 views
3

我已经得到了可用的wifi网络列表,现在我想连接一个特定的网络。所以请指导我在获取网络列表后列表显示。获取可用的wifi连接后以编程方式连接特定的WiFi

**package com.example.wifilist  
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.ScanResult; 
import android.net.wifi.WifiConfiguration; 
import android.net.wifi.WifiConfiguration.KeyMgmt; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.view.View; import android.view.View.OnClickListener; 
import android.widget.AdapterView; import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 
public class MainActivity extends Activity implements OnClickListener 
{ 
    String networkSSID = "test"; 
    String networkPass = "pass"; 
    WifiManager wifi; 
    ListView lv; 
    TextView textstatus; 
    Button buttonscan,buttonConnect; 
    String ITEM_KEY = "key"; 
    ArrayList<String> arralist11=new ArrayList<String>(); 
    ArrayAdapter<String> arrayadapter; 
    List<ScanResult> scanresult; 
    int size=0; 
    protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    buttonConnect=(Button)findViewById(R.id.btn_connect); 
    lv=(ListView)findViewById(R.id.list); 
    wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE); 
    if(wifi.isWifiEnabled()==false) 
    { 
    Toast.makeText(getApplicationContext(), "Wifi Is Not       Enabled",Toast.LENGTH_SHORT).show(); } 
    else 
    { 
    Toast.makeText(getApplicationContext(), "Wifi Is Enabled",Toast.LENGTH_SHORT).show(); 
    } 
    the networbuttonscan=(Button)findViewById(R.id.btn); 
    buttonscan.setOnClickListener(this); 
    arrayadapter=new ArrayAdapter<String> (MainActivity.this,R.layout.adapter,R.id.listtext,arralist11); 
    lv.setAdapter(arrayadapter); 
    private void ScanningWifiNetwork() 
    { 
    registerReceiver(new BroadcastReceiver() 
{ 
    public void 
    onReceive(Context context, Intent intent) 
    { 
    scan result=wifi.getScanResults(); 
    size=scanresult.size(); 
    }, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
} 
@Override public void onClick(View v) 
{ 
    // TODO Auto-generated method 
    stub arralist11.clear(); wifi.startScan(); 
    Toast.makeText(getApplicationContext(),  "Scanning...."+size,Toast.LENGTH_SHORT).show(); 
try 
{ 
    size=size-1; 
    while(size>=0) 
    { 
     HashMap<String, String> item=new HashMap<String, String>(); 
     item.put(ITEM_KEY, scanresult.get(size).SSID+"\n"    +""+scanresult.get(size).capabilities); 
    arralist11.add(scanresult.get(size).SSID+"\n"+scanresult.get(size).capabilities); 
     size--; 
     arrayadapter.notifyDataSetChanged(); 
    } 
} 
catch(Exception e) 
    { 
     System.out.println("error in on click view block"+'\n'); 
     e.printStackTrace(); 
    } 
} 

回答

12

尝试这个

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
// setup a wifi configuration 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "\"YOUR_SSID\""; 
    wc.preSharedKey = "\"YOUR_PASSWORD\""; 
    wc.status = WifiConfiguration.Status.ENABLED; 
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
// connect to and enable the connection 
int netId = wifiManager.addNetwork(wc); 
wifiManager.enableNetwork(netId, true); 
wifiManager.setWifiEnabled(true);