android - 获取可用的 wifi 连接后,以编程方式连接特定的 wifi

标签 android android-wifi wifimanager

我有可用的 wifi 网络列表列表,现在我想连接到特定网络。所以请指导我在 ListView 中获取网络列表后必须做什么。

**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(); 
  } 
}

最佳答案

试试这个

  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);

关于android - 获取可用的 wifi 连接后,以编程方式连接特定的 wifi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20737693/

相关文章:

android模拟器,在主屏幕上获取小部件

android - 是否可以通过 L2CAP 连接 iOS (11.4) 和 Android (10+)

android-wifi - 我可以从代码中打开 WiFi-Direct 吗?在 Android API-14 (ICS) 上

android - 忘记网络在 Android Marshmallow 中不起作用?

Android WifiLock WIFI_MODE_SCAN_ONLY 不工作

android - 是否可以在单元测试下模拟 android 服务?

android - 如何检查 wifi 是否真的在 Android 中连接

android - "SHAREit"android 应用程序在技术上是如何工作的?

java - 在 Android 中为双 SIM 设备配置 EAP-SIM

java - 服务内的((按钮) View )不起作用