Android2.3.4的手机怎样android连接wifi代码?

当前访客身份:游客 [
你只管精彩,上天自有安排!
:最近在用swig做jni自动生成,女汉子可以看下,再...
:禁用和恢复是在一个应用里边吧?那怎么在另外一个...
:楼主用的framework.jar.service.jar是从哪个版本...
:File_Close_interface ====================== 这...
:解决了谢谢啦那个类好像在4.4中没有了已经
:多谢啦,第一次弄源码的东西,看不懂啊,谢谢啦
:楼主你好把classes.jar导进去之后DhcpInfoInter...
:不错的例子,之前看了邓凡平的《深入理解Android...
:引用来自“好好学习Android”的评论 引用来自“_...
:引用来自“_liusl”的评论 引用来自“好好学习A...
今日访问:49
昨日访问:45
本周访问:282
本月访问:1127
所有访问:24312
android4.0 WIFI实现网络连接
发表于2年前( 10:24)&&
阅读(7296)&|&评论()
0人收藏此文章,
&& & & & android4.0上打开wifi后,自动扫描附近所有的wifi热点,连接指定的wifi名称和密码,DHCP动态获取IP后,最后使用Ping命令对连网进行测试。
1.注册wifi的广播接收器:
&& & & & &监听WifiManager.WIFI_STATE_CHANGED_ACTION消息,并实时处理wifi状态的变化。
&& &wifi的消息一共有五种:
&&&&WifiManager.WIFI_STATE_DISABLED: //wifi不可用
&&&&WifiManager.WIFI_STATE_DISABLING://wifi 正在关闭或者断开
&&&&WifiManager.WIFI_STATE_ENABLED://wifi可用
&&&&WifiManager.WIFI_STATE_ENABLING://wifi正在打开或者连接
&&&&WifiManager.WIFI_STATE_UNKNOWN://未知消息
&& &仅在wifi状态为WIFI_STATE_ENABLED的时候,才表示wifi已经连接成功。因此我们在此可以进行连通测试,若想成功获取ip,最好等待3s再去获取ip信息。在测试过程中,发现wifi连网成功后,立马去进行ping命令测试的话,其实际的ip信息还没有来得及设置。
&&&&private void registerWIFI() {
&&&&&&&&IntentFilter mWifiFilter = new IntentFilter();
&&&&&&&&mWifiFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
&&&&&&&&registerReceiver(mWifiConnectReceiver, mWifiFilter);
&&&&private BroadcastReceiver mWifiConnectReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
&&&&&&&&&&&&Log.d(TAG, "Wifi onReceive action = " + intent.getAction());
&&&&&&&&&&&&if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
&&&&&&&&&&&&&&&&int message = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1);
&&&&&&&&&&&&&&&&Log.d(TAG, "liusl wifi onReceive msg=" + message);
switch (message) {
case WifiManager.WIFI_STATE_DISABLED:
&&&&Log.d(TAG, "WIFI_STATE_DISABLED");
case WifiManager.WIFI_STATE_DISABLING:
&&&&Log.d(TAG, "WIFI_STATE_DISABLING");
case WifiManager.WIFI_STATE_ENABLED:
&&&&Log.d(TAG, "WIFI_STATE_ENABLED");
&&&&threadSleep(10000);
&&&&pingWifiGateway(EthUtils.getWifiGateWay());
case WifiManager.WIFI_STATE_ENABLING:
&&&&Log.d(TAG, "WIFI_STATE_ENABLING");
case WifiManager.WIFI_STATE_UNKNOWN:
&&&&Log.d(TAG, "WIFI_STATE_UNKNOWN");
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
2.构造一个wifi 的工具类:
&& &提供打开wifi,关闭wifi,扫描WIFI热点,连接wifi热点,获取IP信息,以及一些wifi热点信息的获取。
import java.util.L
import android.content.C
import android.net.DhcpI
import android.net.wifi.ScanR
import android.net.wifi.WifiC
import android.net.wifi.WifiI
import android.net.wifi.WifiM
import android.net.wifi.WifiManager.WifiL
import android.util.L
public class WifiAdmin {
private static final String TAG = "[WifiAdmin]";
private WifiManager mWifiM
private WifiInfo mWifiI
private List&ScanResult& mWifiList =
private List&WifiConfiguration& mWifiC
private WifiLock mWifiL
private DhcpInfo dhcpI
public WifiAdmin(Context context) {
&&&&mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
&&&&mWifiInfo = mWifiManager.getConnectionInfo();
public boolean openWifi() {//打开wifi
if (!mWifiManager.isWifiEnabled()) {
Log.i(TAG, "setWifiEnabled.....");
mWifiManager.setWifiEnabled(true);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i(TAG, "setWifiEnabled.....end");
return mWifiManager.isWifiEnabled();
public void closeWifi() { if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
public int checkState() {
return mWifiManager.getWifiState();
public void acquireWifiLock() {//锁定wifiLock
mWifiLock.acquire();
public void releaseWifiLock() {//解锁wifiLock
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
public List&WifiConfiguration& getConfiguration() {
return mWifiC
public void connectConfiguration(int index) {//指定配置好的网络进行连接
if (index & mWifiConfiguration.size()) {
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);
public void startScan() {//wifi扫描
boolean scan = mWifiManager.startScan();
Log.i(TAG, "startScan result:" + scan);
mWifiList = mWifiManager.getScanResults();
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
if (mWifiList != null) {
Log.i(TAG, "startScan result:" + mWifiList.size());
for (int i = 0; i & mWifiList.size(); i++) {
ScanResult result = mWifiList.get(i);
Log.i(TAG, "startScan result[" + i + "]" + result.SSID + "," + result.BSSID);
Log.i(TAG, "startScan result end.");
Log.i(TAG, "startScan result is null.");
public List&ScanResult& getWifiList() {
return mWifiL
public StringBuilder lookUpScan() {// 查看扫描结果 &&
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i & mWifiList.size(); i++) {
stringBuilder.append("Index_" + new Integer(i + 1).toString() + ":");
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
return stringB
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
public DhcpInfo getDhcpInfo() {
return dhcpInfo = mWifiManager.getDhcpInfo();
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
public WifiInfo getWifiInfo() {
mWifiInfo = mWifiManager.getConnectionInfo();
return mWifiI
public void addNetwork(WifiConfiguration wcg) {&// 添加一个网络配置并连接 &
int wcgID = mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
System.out.println("addNetwork--" + wcgID);
System.out.println("enableNetwork--" + b);
public void disconnectWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) {
Log.i(TAG, "SSID:" + SSID + ",password:" + Password);
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
WifiConfiguration tempConfig = this.IsExsits(SSID);
if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
Log.i(TAG, "IsExsits is null.");
if (Type == 1) // WIFICIPHER_NOPASS
Log.i(TAG, "Type =1.");
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
if (Type == 2) // WIFICIPHER_WEP
Log.i(TAG, "Type =2.");
config.hiddenSSID =
config.wepKeys[0] = "\"" + Password + "\"";
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
if (Type == 3) // WIFICIPHER_WPA
Log.i(TAG, "Type =3.");
config.preSharedKey = "\"" + Password + "\"";
config.hiddenSSID =
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
// config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.ENABLED;
private WifiConfiguration IsExsits(String SSID) {&// 查看以前是否已经配置过该SSID &
List&WifiConfiguration& existingConfigs = mWifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
return existingC
3.打开wifi并扫描附近热点:
&&&&wifi打开后,可以通过WifiManager进行wifi热点的扫描。
&&&&EthernetManager mEthManager =
WifiManager mWifiManager =
connectivityManager mConnectivityManager =
WifiAdmin wifiAdmin =
mEthManager = (EthernetManager) context.getSystemService(Context.ETHERNET_SERVICE);
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
wifiAdmin = new WifiAdmin(context);
mEthManager.setEthernetEnabled(false);
boolean open = wifiAdmin.openWifi();
Log.i(TAG, "wifi open:" + open);
wifiAdmin.startScan();
connectWifi();
4.连接指定的wifi名称[SSID]:
&&&&TP-LINK_liusl,密码为:liusl2222
&&WIFI的连接类型分为:
&&&&&&&&1.没有密码:WIFICIPHER_NOPASS
&&&&&&&&2.用wep加密:WIFICIPHER_WEP
&&&&&&&&3.用wpa加密:WIFICIPHER_WPA&& &
wifiAdmin.addNetwork(wifiAdmin.CreateWifiInfo(“TP-LINK_liusl”, "liusl2222", 3));
5.获取wifi连接成功后的ip信息:
public static String getWifiGateWay() {
&&&&DhcpInfo dhcpInfo = wifiAdmin.getDhcpInfo();
&&&&Log.v(" wifi ipAddress", Formatter.formatIpAddress(dhcpInfo.ipAddress) + "");
&&&&Log.v("wifi gateway", Formatter.formatIpAddress(dhcpInfo.gateway) + "");
&&&&Log.v("wifi dns1", Formatter.formatIpAddress(dhcpInfo.dns1) + "");
&&&&Log.v("wifi dns2", Formatter.formatIpAddress(dhcpInfo.dns2) + "");
&&&&wifi_gateway = Formatter.formatIpAddress(dhcpInfo.gateway);
&&&&return wifi_
6.ping命令测试wifi的连通:
&& & 使用Root权限,通过JNI封装成一个系统库,调用exe command进行ping -c 4 -w 100 192.168.1.1测试。代码将不详细贴出。
&& &执行结果:
&&&&I/SystemTestingJNI( 1836): executeCommand ret=0, result=PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. &&&&I/SystemTestingJNI( 1836): 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=6.54 ms &&&&I/SystemTestingJNI( 1836): 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.316 ms &&&&I/SystemTestingJNI( 1836): 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.194 ms&&&& &&&&I/SystemTestingJNI( 1836): 64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.255 ms &&&&I/SystemTestingJNI( 1836):& &&&&I/SystemTestingJNI( 1836): --- 192.168.1.1 ping statistics --- &&&&I/SystemTestingJNI( 1836): 4 packets transmitted, 4 received, 0% packet loss, time 3001ms &&&&I/SystemTestingJNI( 1836): rtt min/avg/max/mdev = 0.194/1.826/6.542/2.723 ms
&&--还有一种方法,使用Runtime去ping,但是需要注意权限问题,以及输入输出流得自己处理。&exec执行时阻塞、非阻塞,返回结果问题
&&&&Process p= Runtime.getRuntime().exec(cmd);//String cmd
7.添加网络控制权限以及wifi的权限:
&& &&uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /&
&& &&uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&
&& &&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&& &&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读哪款免费wifi手机软件最好用?四款免费wifi手机软件上网评测
今天小编为大家亲测几款市面上最常用的手机wifi软件,看看到底哪些手机wifi软件最好用,并且是真正的免费。感兴趣的朋友们可以过来看看
wifi成为我们的必需品之一,但并不是随时随地都有wifi可使用,于是,市场上出现了一大批号称可免费上网的wifi软件。今天小编为大家亲测几款市面上最常用的手机wifi软件,看看哪些手机wifi软件真的好用,并且是真正的免费。小编此次评测的wifi软件包括wifi万能钥匙、360免费wifi、畅无线、wifi伴侣等。
使用软件:wifi万能钥匙
软件名称:WiFi万能钥匙 for android
v3.2.56 安卓版软件大小:7.26MB更新时间:
免费程度:全部免费
wifi热点数量:四款软件中最多的,但不支持中国移动CMCC、中国电信、中国联通等WLAN
使用感受:连接快速,wifi地址真实可上网,较为方便
进入应用,一键查询万能钥匙摁键明显,wifi名称后有小钥匙图案的可免费连接,小编亲测有效。
连上免费wifi后,可进行自动连接、分享热点、信号检测、举报热点等功能。
设置页可登录账号、wifi流量统计等功能,左右不大。
这个安全指数看看就好了。
wifi万能钥匙有热门资讯页,使之并不是一个简单的wifi软件,用过便抛诸脑后了,但新闻资讯较为无聊且更新速度一般。
百宝箱页面可下载软件、游戏。
需要注意的是,WiFi万能钥匙是一个「以免费 Wi-Fi 的名义来获取用户信息」的应用。它先营造一个「加密热点免密码登录」之类的噱头吸引用户下载,通过自动收集用户 Wi-Fi 密码等「流氓行为」来快速扩张数据库,再通过积累的口碑覆盖更多用户,获取更多 Wi-Fi 密码。模式相当简单,却十分奏效。
所以网友们要小心自家的wifi会被别人蹭网。
使用软件:wifi伴侣
软件名称:WiFi伴侣手机客户端 for android V3.3.1 安卓版软件大小:7.82MB更新时间:
免费程度:号称免费使用三大运营商WIFI,但需要做任务才能获得歪点
wifi热点数量:免费热点少
使用感受:果然是天下没有免费的午餐
小编亲测,wifi密码并不能解锁。
离线解锁功能基本是摆设。唉。
仍然以鼓励充值或者赚歪点。
看起来很多热点,就是不轻易的让你连啊!!
WiFi伴侣很巧妙地结合了「畅无线」与「WiFi万能钥匙」的模式,以「免费供应中国移动 CMCC」做诱饵,光明正大鼓励用户分享他人 Wi-Fi 密码(用户可通过分享 Wi-Fi 密码来获取连接 CMCC 必需的积分)。壮大后台数据库的同时,又巧妙地躲过了道德层面的谴责。
使用软件:畅无线
软件名称:畅无线手机免费上网 for Android v3.3.7.2 官网正式版 安卓版软件大小:3.66MB更新时间:
免费程度:号称免费使用三大运营商WIFI,同样需要购买或者做部分任务获得畅豆
wifi热点数量:一般
使用感受:10分钟需要1颗畅豆,相当坑爹。但好处是,畅无线使用起来较为安全
页面风格最简单的wifi软件,仅两页。
畅无线则致力于帮助用户快速查找并接入公共 Wi-Fi 热点,目前已支持中国移动的 CMCC 与中国电信的 ChinaNet。由于采用的是「付费购买、免费分销」,因此畅无线在安全性方面占有一定优势,最起码它不会随意上传用户 Wi-Fi 密码并免费开放,这也给 WiFi伴侣营造了一个「付费服务」契机。同样的服务,价格只要运营商套餐的 1/N ,你会怎样选?
使用软件:360免费wifi
软件名称:360免费wifi手机客户端 for android v3.5.1 官方安卓版软件大小:4.70MB更新时间:
免费程度:免费
wifi热点数量:一般
使用感受:部分wifi地址显示可使用,但是连接不上去,号称360用户免费使用中国移动热点,也经常连不上去
360免费wifi页面设计简单、清晰,是小编在四款wifi软件中最喜欢的。
每天登录一次就送一小时免费运营商热点。
可惜都连不上。。。
四款软件中,真的可以免费使用的是wifi万能钥匙和360免费wifi,虽然很多地方都没有热点,但不时能连上免费wifi已经心满意足了。但需要注意的是初次使用「WiFi万能钥匙」时,它会自动将用户当前连接的 Wi-Fi 信息上传到服务器中。同时WiFi伴侣也会通过积分奖励的形式鼓励用户分享当前热点。若然你与你的邻居都安装了同一免费 Wi-Fi 应用,这也意味着你们就可以「互相串门」了。这些安全问题也不容忽视。当前位置: >
没有流量怎么办 3种办法教你如何手机连接电脑上网
没有流量怎么办 3种办法教你如何手机连接电脑上网
13:25|编辑:谜团|来源:265G安卓网
没有wifi,想让手机通过电脑的有线连接上网?android手机可以通过wifi上网,这个很好。可当没有wifi的时候怎么上啊,3G流量受限,看视频很不划算!我这里总结了几种方法供大家参考。
方法一:usb连接线,手机有线上网
1、将手机通过usb线连接到电脑,勾选&设置 -& 无线和网络 -& 绑定与便携热点 -& USB绑定&选项,电脑上会出现虚拟网卡,
为便于分辨,给虚拟网卡改个名字叫:
2、共享电脑网络至android网卡;
3、打开超级终端,su变身超级用户,查询手机ip
# busybox ifconfig
手机ip:192.168.43.100(每个人不一样)
4、把电脑上android网卡的ip改为192.168.43.1;
5、添加默认网关
#busybox route add default gw 192.168.43.1
辅助软件:busybox、z4root
关键点:手机上的网关IP和电脑上的IP一样。
方法二:无线网卡,手机AP
此方法适用于笔记本有无线网卡,但不支持adhoc,支持anhoc的建议使用方法三。
1、勾选&设置 -& 无线和网络 -& 绑定与便携热点 -& 便携式Wi-Fi热点&选项,并设置AP(比如:myAp);
2、电脑连接到myAp并获取ip地址(比如:192.168.23.121);
3、添加默认网关
#busybox route add default gw 192.168.23.121
辅助软件:busybox、z4root
关键点:手机上的网关IP和电脑上的IP一样。
方法三:支持adhoc的无线网卡,组建wifi如果电脑本身带的无线网卡不支持
的话,可以买一个支持adhoc的usb无线网卡(一般都带驱动,可以直接模拟AP供手机用)。
这里以win7为例,说下大致流程:
1、以管理员身份运行命令提示符;
2、启用并设定&虚拟Wifi网卡&模式;
运行以下命令启用虚拟无线网卡:
netsh wlan set hostednetwork mode=allow ssid=(这里写无线网名字) key=(这里是密码)
3、启用&Internet连接共享(ICS)&;
4、开启无线网络 :netsh wlan start hostednetwork
5、手机连接设置的wifi
扫描加入265G安卓网微信公众平台,第一时间获取智能手机资讯。
作为魅族年度最重磅的一款产品,魅族Pro5拥有极为强悍的配置,外观做工也相当不错,不过在拍照和系统体验方面还需要一些改进。
是游戏网推出的一款专门为热衷手机网游用户量身定制的游戏助手。
0102030405}

我要回帖

更多关于 android wifi自动连接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信