`

android > WiFi > 新建连接

 
阅读更多

 

Wifi2Activity.java

 

package wifi2.com;

import java.util.ArrayList;
import java.util.List;

import wifi2.com.WifiConnect.WifiCipherType;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class Wifi2Activity extends Activity{
	// 右侧滚动条按钮
	private Button connect;
	private TextView Tsid;
	private TextView Tpwd;

	private String sid;
	private String pwd;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		connect = (Button) findViewById(R.id.connect);
		Tsid = (TextView) findViewById(R.id.sid);
		Tpwd = (TextView) findViewById(R.id.pwd);
		
		connect.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				
	
				
				sid = Tsid.getText().toString();
				pwd = Tpwd.getText().toString();				
				
				//WifiAdmin wifiAdmin = new WifiAdmin(Wifi2Activity.this);
				
				WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
				WifiConfiguration wc = new WifiConfiguration();
				wc.SSID = "\""+sid+"\"";	//Milliwave Tech
				
				//判断并开启 wifi 
				if (!wifi.isWifiEnabled()) {
					wifi.setWifiEnabled(true);
				}
				//\\

				//检查是否已经存在相同ssid
				List<WifiConfiguration> list = wifi.getConfiguredNetworks();
				for( WifiConfiguration i : list ) {
				    if(i.SSID != null && i.SSID.equals("\"" + sid + "\"")) {
						
						//连接
						wifi.disconnect(); //not in OP				    	
				    	wifi.enableNetwork(i.networkId, true);
				    	wifi.reconnect(); //not in OP 
						//\\
						
						//删除
				    	//wifi.removeNetwork(i.networkId);  
				         break;
				    }           
				}				
				
				//\\
				
				//-- 是否是开放式的不用密码------------------
				//如果有密码
				//wc.preSharedKey  = "\""+pwd+"\"";	//
				//wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
				//如果是开发式的没有密码的
				wc.wepKeys[0] = "";  
				wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
				wc.wepTxKeyIndex = 0;
				//-- ==============================
				
				
				wc.hiddenSSID = true;
				wc.status = WifiConfiguration.Status.ENABLED;        
				wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
				wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);				
				wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
				wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
				wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
				// TYPE = WIFICIPHER_WEP,WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID  

				
				//wifi.saveConfiguration();
				int res = wifi.addNetwork(wc);
				Toast.makeText(Wifi2Activity.this, "add Network returned " + res, Toast.LENGTH_LONG).show();

			
				boolean b = wifi.enableNetwork(res, true);   
				Toast.makeText(Wifi2Activity.this, "enableNetwork returned " + b, Toast.LENGTH_LONG).show();
				
				//wifi.removeNetwork(addNetId);	移除指定WIFInetid
				
				//wifiAdmin.AddNetwork();
			}
		});
	
	}


	
}

 

 

 

 

main.xml 布局文件

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     android:layout_width="fill_parent"  
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
	
    
    <TextView 
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"
	    android:text="SID"
        />
    
    <EditText 
	    android:id="@+id/sid"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"        
        />
     <TextView 
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"
	    android:text="PassWord"
        />   
      
    <EditText 
	    android:id="@+id/pwd"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"        
        />  
    
	<Button
	    android:id="@+id/connect"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"
	    android:text="连接Wifi"
	    />
</LinearLayout>

 

 

判断 wifi 连接是否可用

 

 

 

	public boolean isWifiConnect() {  
		ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  
		NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
		return mWifi.isConnected();  
	}  

 

获取 android 的 ip

 

 

public String getLocalIpAddress() { 

			        try { 

			            for (Enumeration<NetworkInterface> en = NetworkInterface 

		                   .getNetworkInterfaces(); en.hasMoreElements();) { 

			                 NetworkInterface intf = en.nextElement(); 

		               for (Enumeration<InetAddress> enumIpAddr = intf 

			                       .getInetAddresses(); enumIpAddr.hasMoreElements();) { 

		                   InetAddress inetAddress = enumIpAddr.nextElement(); 

			                   if (!inetAddress.isLoopbackAddress()) { 

			                       return inetAddress.getHostAddress().toString(); 

			                    } 

			                 } 

			           } 

				} catch (SocketException ex) { 


				} 

				return null; 

			} 

 

 

enableNetwork  后要做循环 处理 待 配置好 所有WIFI 信息

 

for (int i = 0; i < 6; i++) {
         if(isWifiConnect() == false || getLocalIpAddress() == null || getLocalIpAddress() == ""){													                                                         
            sleep(2000);					
												
        }
}

或者判断当前 WIFI 的 SSIWifiInfo info = wifi.getConnectionInfo(); 

String ssid = info.getSSID();
if(!ssid.contains("BroadlinkProv")){
      cNewstatus = 0;
}

 D

 

 

 

如果网络类型 只是 WPA

 

 

 

wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

 

 

 

获取IP,MASK,DNS等 信息

 

package t3.com;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.TextView;
import android.net.*;
import android.net.wifi.WifiManager;
import android.text.format.Formatter;

public class T3Activity extends Activity {
    public String   s_dns1 ;
    public String   s_dns2;     
    public String   s_gateway;  
    public String   s_ipAddress;    
    public String   s_leaseDuration;    
    public String   s_netmask;  
    public String   s_serverAddress;
    TextView info;
    DhcpInfo d;
    WifiManager wifii;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wifii= (WifiManager) getSystemService(Context.WIFI_SERVICE);
        d=wifii.getDhcpInfo();

        s_dns1="DNS 1: "+String.valueOf(d.dns1);
        s_dns2="DNS 2: "+String.valueOf(d.dns2);    
        s_gateway="Default Gateway: "+String.valueOf(d.gateway);    
        
        // Formatter.formatIpAddress(d.ipAddress) 方法是将 返回的INT 型 转为 IP 格式
        s_ipAddress="IP Address: "+String.valueOf(Formatter.formatIpAddress(d.ipAddress)); //本地IP
        
        s_leaseDuration="Lease Time: "+String.valueOf(d.leaseDuration);     
        s_netmask="Subnet Mask: "+String.valueOf(Formatter.formatIpAddress(d.netmask));    //本地mask
        s_serverAddress="Server IP: "+String.valueOf(d.serverAddress);

        //dispaly them
        info= (TextView) findViewById(R.id.tv);
        info.setText("Network Info\n"+s_dns1+"\n"+s_dns2+"\n"+s_gateway+"\n"+s_ipAddress+"\n"+s_leaseDuration+"\n"+s_netmask+"\n"+s_serverAddress);
    }
}

 

获取MAC 地址

 

public String getLocalMacAddress() 
    {  
        
        
        WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
        WifiInfo info = wifi.getConnectionInfo();  
        return info.getMacAddress();  
    } 

 

 

其中 wifiinfo , getConnectionInfo()

 

wifiinfo.getBSSID();

wifiinfo.getSSID();

wifiinfo.getIpAddress();获取IP地址。

wifiinfo.getMacAddress();获取MAC地址。

wifiinfo.getNetworkId();获取网络ID。

wifiinfo.getLinkSpeed();获取连接速度,可以让用户获知这一信息。

    wifiinfo.getRssi(); 获取RSSI,RSSI就是接受信号强度指示。在这可以直 接和华为提供的Wi-Fi信号阈值进行比较来提供给用户,让用户对网络或地理位置做出调整来获得最好的连接效果。

    这里得到信号强度就靠wifiinfo.getRssi(); 这个方法。

 

** 检查网络是否连接

package wifi3.com;


import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;

public class Wifi3Activity extends Activity {
    /** Called when the activity is first created. */
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ConnectivityManager cm=(ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info=cm.getActiveNetworkInfo();
        if(info!=null&&info.isConnected())
        {
        	Toast.makeText(Wifi3Activity.this, "可以上网", Toast.LENGTH_LONG).show();
        }else{
        	Toast.makeText(Wifi3Activity.this, "不能上网", Toast.LENGTH_LONG).show();
        }
        
        
    }
    
    
}

 

给权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

开启关闭 WIFI

wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

3·开启、关闭wifi 

if (wifiManager.isWifiEnabled()) {  

wifiManager.setWifiEnabled(false);  

} else {  

wifiManager.setWifiEnabled(true);  

}

 

 获取网关地址

	private static WifiManager wifiManager; 
    private static DhcpInfo dhcpInfo; 
    private static WifiInfo wifiInfo;

    //获取网关
    public static String getGateWay(Context context){ 
        wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
        dhcpInfo = wifiManager.getDhcpInfo(); 
        //dhcpInfo获取的是最后一次成功的相关信息,包括网关、ip等  
        return Formatter.formatIpAddress(dhcpInfo.gateway);      
    } 

 

 ** 获取 当前 连接WIFI NET ID 的 信息包括 加密方式 等

 

			WifiInfo info = wifi.getConnectionInfo(); 
			List<WifiConfiguration> configs = null;
			configs = wifi.getConfiguredNetworks();
			
			Log.d("log2", "[[[[[[[[[[[[[[[[[[[[[["+configs.get(info.getNetworkId())+"]]]]]]]]]]]]]]]]]]]]]]]]]]");
 输出如下 字符串

 

 

 

02-05 11:15:26.225: D/log2(7358): [[[[[[[[[[[[[[[[[[[[[[* ID: 3 SSID: "BroadlinkAP" BSSID: null PRIO: 415
02-05 11:15:26.225: D/log2(7358):  KeyMgmt: WPA_PSK Protocols: RSN
02-05 11:15:26.225: D/log2(7358):  AuthAlgorithms:
02-05 11:15:26.225: D/log2(7358):  PairwiseCiphers: TKIP CCMP
02-05 11:15:26.225: D/log2(7358):  GroupCiphers: TKIP CCMP
02-05 11:15:26.225: D/log2(7358):  PSK: *
02-05 11:15:26.225: D/log2(7358):  eap: 
02-05 11:15:26.225: D/log2(7358):  phase2: 
02-05 11:15:26.225: D/log2(7358):  identity: 
02-05 11:15:26.225: D/log2(7358):  anonymous_identity: 
02-05 11:15:26.225: D/log2(7358):  password: 
02-05 11:15:26.225: D/log2(7358):  client_cert: 
02-05 11:15:26.225: D/log2(7358):  private_key: 
02-05 11:15:26.225: D/log2(7358):  ca_cert: 
02-05 11:15:26.225: D/log2(7358): ]]]]]]]]]]]]]]]]]]]]]]]]]]
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics