- 浏览: 1572250 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (673)
- Linux (3)
- android (302)
- php (12)
- struts2 (1)
- Flex积累 (88)
- Hibernate (8)
- MyEclipse (18)
- android备忘录 (209)
- Java备忘录 (53)
- spring (0)
- Flex备忘录 (30)
- JavaScript (10)
- Tomcat (11)
- Flex FrameWork (0)
- 设计模式学习 (4)
- 休闲娱乐 (4)
- Flex skin (1)
- Flex 组件 (2)
- 持久化相关 (2)
- DotNet相关 (5)
- Flex Style (1)
- Windows (11)
- Flex AIR (9)
- MySQL (1)
- mac OSX (29)
- eclipse (26)
- database (5)
- ARM (1)
- English (1)
- WebService (8)
- javabase64 (2)
- ruby (1)
- sqlite (5)
- ios (7)
- 无线应用 (1)
- Java (3)
- goagent (1)
- oc (1)
最新评论
-
Z_ying:
谢谢分享,上次也遇到过的,解决了,过了一段时间又忘记,幸亏看到 ...
FastJson 示例 及问题 -
wto8559:
这是什么错啊,我也遇到了.问下写一个servlet能解决什么问 ...
Exception in thread "HouseKeeper" java.lang.NullPointerException -
zxjlwt:
如何用php怎么弄了。http://surenpi.com
\U672a\U77e5\U9519\U8bef 字符还原 -
windseamless:
那怎么样才能屏蔽呢
java.lang.IllegalArgumentException: Window type can not be changed after the -
macleo:
Trinea 写道还是利用Fiddler抓包更方便,(1)无需 ...
android网络抓包相关
http://blog.sina.com.cn/s/blog_a5d5f09a01015odz.html
留一份,新浪也会删blog的哦。。。呵呵
这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager
(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。
在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。
打开这个类,我们可以看到以下几个信息
BSSID 接入点的地址,这里主要是指小范围几个无线设备相连接所获取的地址,比如说两台笔记本通过无线网卡进行连接,双方的无线网卡分配的地址。
SSID 网络的名字,当我们搜索一个网络时,就是靠这个来区分每个不同的网络接入点。
Capabilities 网络接入的性能,这里主要是来判断网络的加密方式等。
Frequency 频率,每一个频道交互的MHz 数。
Level 等级,主要来判断网络连接的优先数。
这里只提供了一个方法,就是将获得信息编程字符串toString()。
(2)wifiConfiguration 在我们连通一个wifi 接入点的时候,需要获取到的一些信息。大家可以跟我们有线的设备进行对比一下。
这里的数据相对来说比较复杂一下。
六个子类
WifiConfiguration.AuthAlgorthm 用来判断加密方法。
WifiConfiguration.GroupCipher 获取使用GroupCipher 的方法来进行加密。
WifiConfiguration.KeyMgmt 获取使用KeyMgmt 进行。
WifiConfiguration.PairwiseCipher 获取使用WPA 方式的加密。
WifiConfiguration.Protocol 获取使用哪一种协议进行加密。
wifiConfiguration.Status 获取当前网络的状态。
对于上述加密感兴趣的朋友,可以在网上搜索相关的内容。
(3)WifiInfo 在我们的wifi 已经连通了以后,可以通过这个类获得一些已经连通的wifi 连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:
getBSSID() 获取BSSID
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获得SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获得连接的速度
getMacAddress() 获得Mac 地址
getRssi() 获得802.11n 网络的信号
getSSID() 获得SSID
getSupplicanState() 返回具体客户端状态的信息
(4)wifiManager 这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。这里来说相对复杂,里面的内容比较多,但是通过字面意思,我们还是可以获得很多相关的信息。这个类里面预先定义了许多常量,我们可以直接使用,不用再次创建。
这里还是简单介绍一下这里的方法:
addNetwork(WifiConfiguration config) 通过获取到的网络的链接状态信息,来添加网络
calculateSignalLevel(int rssi , int numLevels) 计算信号的等级
compareSignalLevel(int rssiA, int rssiB) 对比连接A 和连接B
createWifiLock(int lockType, String tag) 创建一个wifi 锁,锁定当前的wifi 连接
disableNetwork(int netId) 让一个网络连接失效
disconnect() 断开连接
enableNetwork(int netId, Boolean disableOthers) 连接一个连接
getConfiguredNetworks() 获取网络连接的状态
getConnectionInfo() 获取当前连接的信息
getDhcpInfo() 获取DHCP 的信息
getScanResulats() 获取扫描测试的结果
getWifiState() 获取一个wifi 接入点是否有效
isWifiEnabled() 判断一个wifi 连接是否有效
pingSupplicant() ping 一个连接,判断是否能连通
ressociate() 即便连接没有准备好,也要连通
reconnect() 如果连接准备好了,连通
removeNetwork() 移除某一个网络
saveConfiguration() 保留一个配置信息
setWifiEnabled() 让一个连接有效
startScan() 开始扫描
updateNetwork(WifiConfiguration config) 更新一个网络连接的信息
此外wifiManaer 还提供了一个内部的子类,也就是wifiManagerLock,WifiManagerLock 的作用是这样的,在普通的状态下,如果我们的wifi 的状态处于闲置,那么网络的连通,将会暂时中断。但是如果我们把当前的网络状态锁上,那么wifi 连通将会保持在一定状态,当然接触锁定之后,就会恢复常态
但是关于链接加密的wifi现在还没有成功……
首先附上一个工具类,有各种WIFI操作方法:
public class WifiAdmin {
// 定义WifiManager对象
private WifiManager mWifiManager;
// 定义WifiInfo对象
private WifiInfo mWifiInfo;
// 扫描出的网络连接列表
private List<ScanResult> mWifiList;
// 网络连接列表
private List<WifiConfiguration> mWifiConfiguration;
// 定义一个WifiLock
WifiLock mWifiLock;
// 构造器
public WifiAdmin(Context context) {
// 取得WifiManager对象
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
// 取得WifiInfo对象
mWifiInfo = mWifiManager.getConnectionInfo();
}
// 打开WIFI
public void openWifi() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}
// 关闭WIFI
public void closeWifi() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
// 检查当前WIFI状态
public int checkState() {
return mWifiManager.getWifiState();
}
// 锁定WifiLock
public void acquireWifiLock() {
mWifiLock.acquire();
}
// 解锁WifiLock
public void releaseWifiLock() {
// 判断时候锁定
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
}
}
// 创建一个WifiLock
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
}
// 得到配置好的网络
public List<WifiConfiguration> getConfiguration() {
return mWifiConfiguration;
}
// 指定配置好的网络进行连接
public void connectConfiguration(int index) {
// 索引大于配置好的网络索引返回
if (index > mWifiConfiguration.size()) {
return;
}
// 连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
public void startScan() {
mWifiManager.startScan();
// 得到扫描结果
mWifiList = mWifiManager.getScanResults();
// 得到配置好的网络连接
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}
// 得到网络列表
public List<ScanResult> getWifiList() {
return mWifiList;
}
// 查看扫描结果
public StringBuilder lookUpScan() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++) {
stringBuilder
.append("Index_" + new Integer(i + 1).toString() + ":");
// 将ScanResult信息转换成一个字符串包
// 其中把包括:BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
}
return stringBuilder;
}
// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
// 得到接入点的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
// 得到IP地址
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
// 得到连接的ID
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}
// 添加一个网络并连接
public void addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
System.out.println("a--" + wcgID);
System.out.println("b--" + b);
}
// 断开指定ID的网络
public void disconnectWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
}
}
然后是一个实际应用方法,只验证过没有密码的情况:
WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)
{
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
if(Type == Data.WIFICIPHER_NOPASS)
{
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if(Type == Data.WIFICIPHER_WEP)
{
config.hiddenSSID = true;
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 == Data.WIFICIPHER_WPA)
{
config.preSharedKey = "\""+Password+"\"";
config.hiddenSSID = true;
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.status = WifiConfiguration.Status.ENABLED;
}
return config;
}
}
分为三种情况:1没有密码2用wep加密3用wpa加密
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
boolean bRet1 = wifiManager.setWifiEnabled(true);
//add network
if (wifiManager.startScan()) //扫描可用的无线网络
{
List scanResultList = wifiManager.getScanResults();
for (int i = 0; i < scanResultList.size(); i++)
{
ScanResult scanRet = scanResultList.get(i);
if (scanRet.SSID.equalsIgnoreCase("TEST")) //找到 TEST
{
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + scanRet.SSID + "\"";
config.preSharedKey = "\"password\""; //指定密码
config.hiddenSSID = true;
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.status = WifiConfiguration.Status.ENABLED;
int netID = wifiManager.addNetwork(config);
boolean bRet = wifiManager.enableNetwork(netID, true);
}
}
}
<!-- 以下是使用wifi访问网络所需要的权限-->
android.permission.CHANGE_NETWORK_STATE //修改网络状态的权限
android.permission.CHANGE_WIFI_STATE //修改wifi状态的权限
android.permission.ACCESS_NETWORK_STATE //访问网络权限
android.permission.ACCESS_WIFI_STATE //访问wifi权
留一份,新浪也会删blog的哦。。。呵呵
这里列了很多,但是大致可以分为四个主要的类ScanResult wifiConfiguration WifiInfo WifiManager
(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。
在我们进行wifi 搜索的时候,一般会搜到这些信息,首先是接入点名字、接入点信息的强弱、还有接入点使用的安全模式,是WPA、WPE。
打开这个类,我们可以看到以下几个信息
BSSID 接入点的地址,这里主要是指小范围几个无线设备相连接所获取的地址,比如说两台笔记本通过无线网卡进行连接,双方的无线网卡分配的地址。
SSID 网络的名字,当我们搜索一个网络时,就是靠这个来区分每个不同的网络接入点。
Capabilities 网络接入的性能,这里主要是来判断网络的加密方式等。
Frequency 频率,每一个频道交互的MHz 数。
Level 等级,主要来判断网络连接的优先数。
这里只提供了一个方法,就是将获得信息编程字符串toString()。
(2)wifiConfiguration 在我们连通一个wifi 接入点的时候,需要获取到的一些信息。大家可以跟我们有线的设备进行对比一下。
这里的数据相对来说比较复杂一下。
六个子类
WifiConfiguration.AuthAlgorthm 用来判断加密方法。
WifiConfiguration.GroupCipher 获取使用GroupCipher 的方法来进行加密。
WifiConfiguration.KeyMgmt 获取使用KeyMgmt 进行。
WifiConfiguration.PairwiseCipher 获取使用WPA 方式的加密。
WifiConfiguration.Protocol 获取使用哪一种协议进行加密。
wifiConfiguration.Status 获取当前网络的状态。
对于上述加密感兴趣的朋友,可以在网上搜索相关的内容。
(3)WifiInfo 在我们的wifi 已经连通了以后,可以通过这个类获得一些已经连通的wifi 连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:
getBSSID() 获取BSSID
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获得SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获得连接的速度
getMacAddress() 获得Mac 地址
getRssi() 获得802.11n 网络的信号
getSSID() 获得SSID
getSupplicanState() 返回具体客户端状态的信息
(4)wifiManager 这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。这里来说相对复杂,里面的内容比较多,但是通过字面意思,我们还是可以获得很多相关的信息。这个类里面预先定义了许多常量,我们可以直接使用,不用再次创建。
这里还是简单介绍一下这里的方法:
addNetwork(WifiConfiguration config) 通过获取到的网络的链接状态信息,来添加网络
calculateSignalLevel(int rssi , int numLevels) 计算信号的等级
compareSignalLevel(int rssiA, int rssiB) 对比连接A 和连接B
createWifiLock(int lockType, String tag) 创建一个wifi 锁,锁定当前的wifi 连接
disableNetwork(int netId) 让一个网络连接失效
disconnect() 断开连接
enableNetwork(int netId, Boolean disableOthers) 连接一个连接
getConfiguredNetworks() 获取网络连接的状态
getConnectionInfo() 获取当前连接的信息
getDhcpInfo() 获取DHCP 的信息
getScanResulats() 获取扫描测试的结果
getWifiState() 获取一个wifi 接入点是否有效
isWifiEnabled() 判断一个wifi 连接是否有效
pingSupplicant() ping 一个连接,判断是否能连通
ressociate() 即便连接没有准备好,也要连通
reconnect() 如果连接准备好了,连通
removeNetwork() 移除某一个网络
saveConfiguration() 保留一个配置信息
setWifiEnabled() 让一个连接有效
startScan() 开始扫描
updateNetwork(WifiConfiguration config) 更新一个网络连接的信息
此外wifiManaer 还提供了一个内部的子类,也就是wifiManagerLock,WifiManagerLock 的作用是这样的,在普通的状态下,如果我们的wifi 的状态处于闲置,那么网络的连通,将会暂时中断。但是如果我们把当前的网络状态锁上,那么wifi 连通将会保持在一定状态,当然接触锁定之后,就会恢复常态
但是关于链接加密的wifi现在还没有成功……
首先附上一个工具类,有各种WIFI操作方法:
public class WifiAdmin {
// 定义WifiManager对象
private WifiManager mWifiManager;
// 定义WifiInfo对象
private WifiInfo mWifiInfo;
// 扫描出的网络连接列表
private List<ScanResult> mWifiList;
// 网络连接列表
private List<WifiConfiguration> mWifiConfiguration;
// 定义一个WifiLock
WifiLock mWifiLock;
// 构造器
public WifiAdmin(Context context) {
// 取得WifiManager对象
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
// 取得WifiInfo对象
mWifiInfo = mWifiManager.getConnectionInfo();
}
// 打开WIFI
public void openWifi() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}
// 关闭WIFI
public void closeWifi() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
// 检查当前WIFI状态
public int checkState() {
return mWifiManager.getWifiState();
}
// 锁定WifiLock
public void acquireWifiLock() {
mWifiLock.acquire();
}
// 解锁WifiLock
public void releaseWifiLock() {
// 判断时候锁定
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
}
}
// 创建一个WifiLock
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
}
// 得到配置好的网络
public List<WifiConfiguration> getConfiguration() {
return mWifiConfiguration;
}
// 指定配置好的网络进行连接
public void connectConfiguration(int index) {
// 索引大于配置好的网络索引返回
if (index > mWifiConfiguration.size()) {
return;
}
// 连接配置好的指定ID的网络
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
public void startScan() {
mWifiManager.startScan();
// 得到扫描结果
mWifiList = mWifiManager.getScanResults();
// 得到配置好的网络连接
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}
// 得到网络列表
public List<ScanResult> getWifiList() {
return mWifiList;
}
// 查看扫描结果
public StringBuilder lookUpScan() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++) {
stringBuilder
.append("Index_" + new Integer(i + 1).toString() + ":");
// 将ScanResult信息转换成一个字符串包
// 其中把包括:BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
}
return stringBuilder;
}
// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
// 得到接入点的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
// 得到IP地址
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
// 得到连接的ID
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}
// 添加一个网络并连接
public void addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
System.out.println("a--" + wcgID);
System.out.println("b--" + b);
}
// 断开指定ID的网络
public void disconnectWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
}
}
然后是一个实际应用方法,只验证过没有密码的情况:
WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)
{
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
if(Type == Data.WIFICIPHER_NOPASS)
{
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if(Type == Data.WIFICIPHER_WEP)
{
config.hiddenSSID = true;
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 == Data.WIFICIPHER_WPA)
{
config.preSharedKey = "\""+Password+"\"";
config.hiddenSSID = true;
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.status = WifiConfiguration.Status.ENABLED;
}
return config;
}
}
分为三种情况:1没有密码2用wep加密3用wpa加密
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
boolean bRet1 = wifiManager.setWifiEnabled(true);
//add network
if (wifiManager.startScan()) //扫描可用的无线网络
{
List scanResultList = wifiManager.getScanResults();
for (int i = 0; i < scanResultList.size(); i++)
{
ScanResult scanRet = scanResultList.get(i);
if (scanRet.SSID.equalsIgnoreCase("TEST")) //找到 TEST
{
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + scanRet.SSID + "\"";
config.preSharedKey = "\"password\""; //指定密码
config.hiddenSSID = true;
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.status = WifiConfiguration.Status.ENABLED;
int netID = wifiManager.addNetwork(config);
boolean bRet = wifiManager.enableNetwork(netID, true);
}
}
}
<!-- 以下是使用wifi访问网络所需要的权限-->
android.permission.CHANGE_NETWORK_STATE //修改网络状态的权限
android.permission.CHANGE_WIFI_STATE //修改wifi状态的权限
android.permission.ACCESS_NETWORK_STATE //访问网络权限
android.permission.ACCESS_WIFI_STATE //访问wifi权
发表评论
-
Axure 教程
2013-06-15 17:44 1213http://zhj6607.blog.163.com/blo ... -
再次android 下的Caused by: java.lang.ClassNotFoundException:
2013-06-05 11:34 2372莫名其妙发生了:Caused by: java.lang.Cl ... -
android RatingBar 收集
2013-05-29 09:50 999RatingBar例子: http://www.eoeandr ... -
java 发送邮件
2013-05-28 16:17 902http://www.blogjava.net/wangfun ... -
ExecutorService 建立多线程的步骤
2013-05-26 22:18 890http://huangxiaojian9999.blog.1 ... -
android include报错解决一例
2013-05-24 13:48 1225一个layout 嵌入另外一个layout < ... -
.net 接口报错解决一例
2013-05-24 13:44 977NullReferenceException: 未将对象引用设 ... -
Overlay移动收集
2013-05-19 17:04 9181.http://changyy.pixnet.net/blo ... -
模拟器 INSTALL_FAILED_CONTAINER_ERROR
2013-05-10 00:21 1587用模拟器跑,总是报这个错。 找了一下,发现是androidma ... -
百度地图总结
2013-05-02 11:34 10821.mMapView.regMapViewListener(a ... -
baidu 2.1.1sdk 貌似有问题
2013-05-02 11:32 9ItemOverlay 哪里去了? -
EditText SetError 4.0下 不显示文字解决
2013-04-24 16:46 2050http://www.eoeandroid.com/forum ... -
短信验证
2013-04-23 15:27 948解决方案如下: http://www.eoeandroid.c ... -
根据两个经纬度计算两地距离
2013-04-23 14:56 1682com.baidu.mapapi.utils.Distance ... -
百度地图 android 线路
2013-04-22 23:39 2496最好的资料莫过于它自己提供的了 -2.管理自己的key htt ... -
android 屏幕方向总结
2013-04-17 15:23 1009http://dev.wo.com.cn/docportal/ ... -
分享总结
2013-04-15 17:28 8661。http://www.umeng.com/componen ... -
sqlitemanager
2013-03-31 23:56 1082http://blog.csdn.net/jjhua/arti ... -
android adb 无法启动
2013-03-31 23:33 1580症状: adb 有运行 但是,eclipse debug模式无 ... -
android 字体样式
2013-03-20 13:17 1135http://tank03.iteye.com/blog/13 ...
相关推荐
在Android平台上进行WiFi连接开发是一项基础且重要的任务,尤其对于初学者来说,了解并掌握相关API的使用至关重要。本文将详细解析Android中的四个主要类:ScanResult、WifiConfiguration、WifiInfo以及WifiManager...
在Android平台上,实现WiFi连接与断开是一项基本且重要的任务,尤其对于开发涉及网络功能的应用时。本节将深入探讨如何构建一个可以完全替代系统原生WiFi管理功能的应用,包括搜索WiFi热点、按信号强度排序、按钮...
android wifi 连接Demo.rar
总结,这个Android Wi-Fi开发Demo示例提供了一个完整的流程,从查找可用的Wi-Fi网络,到连接选定的网络,再到通过Wi-Fi进行数据交换,为开发者提供了实践和学习Android Wi-Fi编程的基础。理解并掌握这些知识点,有助...
最后,为了让用户能够手动控制WiFi连接,可以在应用中创建一个设置界面,展示可用的WiFi网络列表,并提供连接按钮。用户点击后,调用上述的连接方法。 以上就是实现Android WiFi自动连接的核心步骤和涉及的关键技术...
- 由于涉及到WiFi连接,安全非常重要。确保二维码来源可靠,避免恶意代码通过这种方式获取敏感信息或连接到恶意网络。 8. **测试与调试**: - 在开发过程中,应确保在不同设备和Android版本上进行充分的测试,...
- **模拟器**:内置的Android Emulator可以模拟WiFi连接和热点,方便测试。 5. **注意事项**: - 应用需要在AndroidManifest.xml中声明所需的权限,否则运行时将无法执行相应的WiFi操作。 - 高版本的Android系统...
4. **Android WiFi API**:Android提供了`WifiManager`类,它是处理WiFi连接的核心接口。我们可以使用它的`getScanResults()`方法来获取当前所有可扫描到的WiFi网络信息,`connect()`方法用于连接指定的WiFi网络。 ...
开发涉及Wi-Fi功能的Android应用时,需要在`AndroidManifest.xml`文件中添加必要的权限,如`ACCESS_FINE_LOCATION`(用于提升Wi-Fi扫描精度)和`CHANGE_WIFI_STATE`(用于改变Wi-Fi状态)。 8. **监听Wi-Fi状态...
在Android平台上,开发一款应用程序来实现WiFi扫描和连接功能,主要涉及到Android Studio的使用以及Android系统的WiFi管理API。本文将详细讲解如何通过Android Studio编写代码来实现这一功能,包括检查WiFi状态、...
在Android平台上,实现指定WiFi热点自动连接是一项涉及网络管理和设备自动化功能的技术。这一特性对于许多应用,特别是那些依赖稳定网络连接的应用,如智能家居控制、远程监控等,具有重要意义。以下将详细阐述如何...
- 在WiFi连接过程中,会有多种事件被触发,这些事件通过特定的动作来通知应用程序或者系统组件。 - `WIFI_STATE_CHANGED_ACTION`: WiFi状态发生变化时触发。 - `NETWORK_STATE_CHANGED_ACTION`: 网络状态发生变化...
- 为了保护用户隐私,Android系统会限制应用程序访问其他应用的WiFi连接信息,除非用户明确授予相关权限。 - 用户应谨慎处理WiFi密码,避免在不安全的环境中输入,以防被恶意软件窃取。 9. **WiFi Direct**: - ...
如果需要实现设备间的直接WiFi连接,可以使用`WifiP2pManager`类。它提供了发现其他设备、建立连接和传输数据的能力。 8. **WiFi Aware**: 从Android 8.0(API级别26)开始,Android引入了WiFi Aware,也称为...
在Android开发过程中,调试是必不可少的一环,而ADB(Android Debug Bridge)则是Android系统提供的一款强大的命令行工具,用于连接和管理设备...总的来说,掌握WiFi连接ADB的技术,对于提升Android开发效率非常有帮助。
本项目是一个实现自动连接指定的wifi的功能,可以检测...程序比较简单,仅供参考,javaapk之前也发布过很多关于androidwifi开发的源码,需要更多wifi相关源码可以访问http://www./?s=wifi 本项目编码UTF-8编译版本4.0.3
在Android WiFi Camera中,设备通过WiFi连接到同一网络,使得其他设备能够访问和控制Android设备上的摄像头。 3. **IP摄像头**:IP摄像头是一种基于网络协议的摄像头,可以通过网络进行视频传输和远程访问。在...
在Android平台上,开发一款应用程序以实现WiFi连接功能是一项常见的任务,尤其对于那些需要网络通信的应用而言。本示例,"Android Wifi连接例子",提供了一个详细的教程,教你如何编写代码来连接到特定的WiFi网络,...
本文是【Android开发】wifi开关与wifi连接(密码连接)【地址:http://blog.csdn.net/jingleye/article/details/50416890】博文的demo,这个demo包含了wifi的开关,wifi信息的获取,wifi扫描,wifi有无密码的连接
其中,WiFi模块负责WiFi连接和数据传输,WiFi Display模块负责WiFi Display功能的控制和数据传输,而显示模块负责显示 WiFi Display的内容。 二、代码分析 WiFi Display功能的代码分析可以参考博客...