`

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): ]]]]]]]]]]]]]]]]]]]]]]]]]]
 
分享到:
评论

相关推荐

    基于Android的WiFi文件传输系统的设计与实现.doc

    《基于Android的WiFi文件传输系统的设计与实现》 在当今移动设备高度普及的时代,文件分享已经成为日常生活和工作中不可或缺的一部分。Android作为全球最广泛使用的智能手机操作系统,其应用市场中充斥着各种文件...

    E4A(易安卓) wifi通信

    E4A支持多种Android API,包括网络通信API,这使得它能与各种硬件设备进行数据交换,例如通过WiFi连接的单片机。 单片机,也称为微控制器,是一种集成化的微型计算机,主要用于控制电子设备。在本案例中,单片机...

    安卓android手机用WIFI共享电脑文件.pdf

    4. 右键单击已连接到Internet的网络连接,选择“属性”-&gt;“共享”,允许虚拟WiFi连接。 5. 如果遇到错误0x80004005,可能需要启用“Windows Firewall”服务。 6. 使用命令`netsh wlan start hostednetwork`启动虚拟...

    XP系统把无线网卡设置成WIFI热点供Android上网

    回到“网络连接”窗口,右键点击空白处,选择“新建连接”。在向导中,选择“创建自定义连接”,然后选择“手动设置我的互联网连接”。下一步,选择“不连接到Internet,只建立网络连接”。在接下来的步骤中,输入你...

    android编程实现设置、打开wifi热点共享供他人连接的方法

    在Android平台上,开发人员可以利用系统提供的API来创建并管理WiFi热点,以便让其他设备连接并共享网络。本文将深入探讨如何通过编程实现这一功能,包括设置和打开WiFi热点。 首先,要创建一个WiFi热点,我们需要...

    Android iphone 手机wifi共享电脑无线网卡超赞

    一个超赞的分享电脑无线网卡的工具,大家可能都知道,使用电脑新建一个无线,是在手机的wifi中无法查到的,我们通常都会使用复杂的工具来完成这个问题如:connectify等,但是工具十分复杂并且跟电脑性能有一定关系,...

    DELPHI开发Android连接SQL数据库应用系统讲解.pdf

    【DELPHI开发Android连接SQL数据库应用系统讲解】 在当今移动设备盛行的时代,利用DELPHI进行Android应用程序的开发,连接SQL数据库以实现数据的存储和处理,是一种常见的技术实践。本文主要介绍了如何使用DELPHI ...

    android P2P技术实现源码

    - **Android中的P2P实现**:Android系统提供了一个名为`WifiDirect`的框架,它支持设备之间的直接连接,创建P2P网络,实现高速的数据传输。 2. **JavaApk源码说明.txt** - 这个文件可能包含对源代码的详细解释,...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    WIFI实现Android手机和笔记本电脑之间文件互传.doc

    WIFI实现Android手机和笔记本电脑之间文件互传 WI-FI是一种非常流行的无线网络技术,目前几乎所有的笔记本电脑和Android手机都支持WI-FI功能。通过WI-FI,我们可以实现Android手机和笔记本电脑之间的文件互传,不再...

    Android 开发简介

    它内置了WebKit浏览器,提供多种连接选项,如WiFi、蓝牙和无线数据传输。此外,Android还支持与Google地图集成,提供基于位置的服务和硬件支持,如GPS和加速计(视具体设备而定)。 Android应用程序的架构是多层次...

    Android手机如何通过USB共享PC网络.doc

    2. 进入设置-&gt;无线和网络-&gt;移动网络设置-&gt;接入点名称,新建一个接入点,名称为 USB 网络(可以为任意名称),然后保存并启用。 3. 进入设置-&gt;无线和网络,点击“移动网络”进行连接,这个时候可以看到最底下的 USB ...

    android x86 安装的总结里面含有QQ号,

    然后,配置网络连接,选择合适的网络模式,例如 WiFi 或以太网。 五、项目的整合和指令的总结 在安装完成 Android X86 系统之后,我们需要将项目整合到一起,并总结相关的指令。例如,我们可以使用 ADB 工具来管理...

    Android程序开发教程

    1. **步骤一**:通过“File -&gt; New -&gt; Project”菜单新建一个Android项目。 2. **步骤二**:填写项目的详细参数。 - **Project Name**:项目文件夹名称。 - **Package Name**:遵循Java命名规则的包名,建议使用...

    电脑通过android手机上网教程

    3. **配置拨号参数**:在新建连接的设置中,选择“拨号”类型,并指定刚才配置好的Modem。 **第四步:拨号上网** 1. **建立连接**:打开新建的拨号连接,通常会有一个默认的名称如“宽带连接”。在用户名和密码...

    apwifi热点

    4. **网络共享**:将已连接的互联网连接共享到新建的热点网络,这可能需要调整网络共享设置。 5. **安全考虑**:启用WPA2或更高级别的加密以保护网络,防止未经授权的访问。 6. **性能优化**:调整热点的发射功率...

    Android手机浏览Win7电脑的共享文件

    今天,我们主要介绍的是一种方法,可以使用Android手机查看并操作Windows 7电脑上共享的文件,而无需通过数据线连接或互联网。为了实现这一功能,我们需要在电脑上创建WiFi热点,然后通过手机连接到这个热点,并利用...

    Windows下cmd程序adb命令所需文件

    在Windows操作系统中,Android开发者工具包(SDK)中的ADB(Android Debug Bridge)是一个强大的命令行工具,用于与连接到电脑的Android设备进行通信。本文将详细介绍ADB在Windows下的使用,包括如何配置CMD(命令...

    android入门经典资料

    - **创建项目**: 在IDE中选择新建Android项目,配置项目的基本信息。 - **设计界面**: 使用XML文件来设计用户界面。 - **运行程序**: 在模拟器或真实设备上运行程序进行测试。 #### 四、Android核心物件与程序构架 ...

Global site tag (gtag.js) - Google Analytics