当前位置:首页 » 安卓系统 » wifiandroid源码

wifiandroid源码

发布时间: 2022-12-11 23:35:13

❶ 我想修改ANDROID的wifi系统,我用什么技术容易实现呢

你的登录了我理解为就可以上网了。 你现在可以随便访问一个URL如网络的,然后获取重定向的URL,如果还是网络的,说明登录了。 如果不是网络,跳转到了你指定的域名了说明就没有登录,然后现在你 用post 重新发一个URL 里面包含你的用户名和密码就好了啊

❷ android 怎么判断是否wifi

AndroidAPI有提供获取网络状态以及网络类型的接口,代码也很简单

NetworkInfonetworkInfo=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo();

if(networkInfo!=null&&networkInfo.isConnected()){

if(networkInfo.getType()==ConnectivityManager.TYPE_WIFI)//这个状态就是wifi

//TODO

}elseif(networkInfo.getType()==ConnectivityManager.TYPE_MOBILE)

{

//TODO

}

}

希望能帮到你

一下这些是源码中的一些网络类型定义,可以参考一下

❸ Android WiFi开发,如何自动连接的代码

public class WifiAutoConnectManager {
private static final String TAG = WifiAutoConnectManager.class.getSimpleName();
WifiManager wifiManager;
// 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况 public enum WifiCipherType { WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID }
// 构造函数 public WifiAutoConnectManager(WifiManager wifiManager) { this.wifiManager = wifiManager; }
// 提供一个外部接口,传入要连接的无线网 public void connect(String ssid, String password, WifiCipherType type) { Thread thread = new Thread(new ConnectRunnable(ssid, password, type)); thread.start(); }
// 查看以前是否也配置过这个网络 private WifiConfiguration isExsits(String SSID) { List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; }
private WifiConfiguration createWifiInfo(String SSID, String Password, WifiCipherType Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; // nopass if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wep if (Type == WifiCipherType.WIFICIPHER_WEP) { if (!TextUtils.isEmpty(Password)) { if (isHexWepKey(Password)) { config.wepKeys[0] = Password; } else { config.wepKeys[0] = "\"" + Password + "\""; } } config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); config.allowedKeyManagement.set(KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wpa if (Type == WifiCipherType.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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }
// 打开wifi功能 private boolean openWifi() { boolean bRet = true; if (!wifiManager.isWifiEnabled()) { bRet = wifiManager.setWifiEnabled(true); } return bRet; }
class ConnectRunnable implements Runnable { private String ssid;
private String password;
private WifiCipherType type;
public ConnectRunnable(String ssid, String password, WifiCipherType type) { this.ssid = ssid; this.password = password; this.type = type; }
@Override public void run() { // 打开wifi openWifi(); // 开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi // 状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句 while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) { try { // 为了避免程序一直while循环,让它睡个100毫秒检测…… Thread.sleep(100); } catch (InterruptedException ie) { } }
WifiConfiguration wifiConfig = createWifiInfo(ssid, password, type); // if (wifiConfig == null) { Log.d(TAG, "wifiConfig is null!"); return; }
WifiConfiguration tempConfig = isExsits(ssid);
if (tempConfig != null) { wifiManager.removeNetwork(tempConfig.networkId); }
int netID = wifiManager.addNetwork(wifiConfig); boolean enabled = wifiManager.enableNetwork(netID, true); Log.d(TAG, "enableNetwork status enable=" + enabled); boolean connected = wifiManager.reconnect(); Log.d(TAG, "enableNetwork connected=" + connected); } }
private static boolean isHexWepKey(String wepKey) { final int len = wepKey.length();
// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?) if (len != 10 && len != 26 && len != 58) { return false; }
return isHex(wepKey); }
private static boolean isHex(String key) { for (int i = key.length() - 1; i >= 0; i--) { final char c = key.charAt(i); if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f')) { return false; } }
return true; }}

❹ Android之WIFI-网络可用性校验(NetworkMonitor)

流程框架

基础知识

源码

细节
1.WifiStateMachine在状态L2ConnectedState时,进行NetworkAgent初始化。
NetworkAgent初始化的过程建立与ConnectivityService通信

2.ConnectivityService的registerNetworkAgent创建NetworkAgentInfo

3.NetworkAgentInfo的初始化,创建NetworkMonitor,而NetworkMonitor则是监听网络的可用性

4.NetworkMonitor

adb控制

问题

参考学习

❺ 有关android内核的wifi驱动api

通过程序来实现wifi的自动连接。

这两天对android的wifi功能研究了一下。下面共享出自己封装的WifiConnect类。(这里参考了ZXing开源项目中wifi模块)

首先,要了解android关于wifi的API.

如果喜欢看English API,这是android关于wifi的API地址:

http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,还需要设定权限,android中关于wifi的API文档中说明了要添加什么权限)

如果一看英语就头疼,这里有关于wifi的api的中文解释

http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN

切入正题,这里贴出一个封装了的类(WifiConnect),在实例化WifiConnect对象时,需要传入一个WifiManager对象。WifiConnect类向外部提供一个Connect方法,参数是无线的SSID,password,还有加密类型。

[java] view plainprint?
  1. <spanstyle="font-size:18px;">packagecom.example.aptest;
  2. importjava.util.List;
  3. importandroid.net.wifi.WifiConfiguration;
  4. importandroid.net.wifi.WifiManager;
  5. publicclassWifiConnect{
  6. WifiManagerwifiManager;
  7. //定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况
  8. publicenumWifiCipherType
  9. {
  10. WIFICIPHER_WEP,WIFICIPHER_WPA,WIFICIPHER_NOPASS,WIFICIPHER_INVALID
  11. }
  12. //构造函数
  13. publicWifiConnect(WifiManagerwifiManager)
  14. {
  15. this.wifiManager=wifiManager;
  16. }
  17. //打开wifi功能
  18. privatebooleanopenWifi()
  19. {
  20. booleanbRet=true;
  21. if(!wifiManager.isWifiEnabled())
  22. {
  23. bRet=wifiManager.setWifiEnabled(true);
  24. }
  25. returnbRet;
  26. }
  27. //提供一个外部接口,传入要连接的无线网
  28. publicbooleanconnect(StringSSID,StringPassword,WifiCipherTypeType)
  29. {
  30. if(!this.openWifi())
  31. {
  32. returnfalse;
  33. }
  34. //开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
  35. //状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
  36. //WifiManager.WIFI_STATE_ENABLING2
  37. //WifiManager.WIFI_STATE_ENABLED3
  38. System.out.println("wifiManager.getWifiState()"+wifiManager.getWifiState());
  39. while(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLING)
  40. {
  41. System.out.println("wifiManager.getWifiState"+wifiManager.getWifiState());
  42. try{
  43. //为了避免程序一直while循环,让它睡个100毫秒在检测……
  44. Thread.currentThread();
  45. Thread.sleep(100);
  46. }
  47. catch(InterruptedExceptionie){
  48. }
  49. }
  50. WifiConfigurationwifiConfig=this.createWifiInfo(SSID,Password,Type);
  51. //
  52. if(wifiConfig==null)
  53. {
  54. returnfalse;
  55. }
  56. WifiConfigurationtempConfig=this.isExsits(SSID);
  57. if(tempConfig!=null)
  58. {
  59. wifiManager.removeNetwork(tempConfig.networkId);
  60. }
  61. intnetID=wifiManager.addNetwork(wifiConfig);
  62. booleanbRet=wifiManager.enableNetwork(netID,false);
  63. returnbRet;
  64. }
  65. //查看以前是否也配置过这个网络
  66. (StringSSID)
  67. {
  68. List<WifiConfiguration>existingConfigs=wifiManager.getConfiguredNetworks();
  69. for(:existingConfigs)
  70. {
  71. if(existingConfig.SSID.equals("""+SSID+"""))
  72. {
  73. returnexistingConfig;
  74. }
  75. }
  76. returnnull;
  77. }
  78. (StringSSID,StringPassword,WifiCipherTypeType)
  79. {
  80. WifiConfigurationconfig=newWifiConfiguration();
  81. config.allowedAuthAlgorithms.clear();
  82. config.allowedGroupCiphers.clear();
  83. config.allowedKeyManagement.clear();
  84. config.allowedPairwiseCiphers.clear();
  85. config.allowedProtocols.clear();
  86. config.SSID="""+SSID+""";
  87. if(Type==WifiCipherType.WIFICIPHER_NOPASS)
  88. {
  89. config.wepKeys[0]="""+""";;
  90. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  91. config.wepTxKeyIndex=0;
  92. //或者下面两段代码也可以
  93. //config.hiddenSSID=true;
  94. //config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  95. }
  96. elseif(Type==WifiCipherType.WIFICIPHER_WEP)
  97. {
  98. config.wepKeys[0]="""+Password+""";
  99. config.hiddenSSID=true;
  100. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
  101. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  102. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  103. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  104. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
  105. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  106. config.wepTxKeyIndex=0;
  107. }
  108. elseif(Type==WifiCipherType.WIFICIPHER_WPA)
  109. {
  110. config.preSharedKey="""+Password+""";
  111. config.hiddenSSID=true;
  112. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
  113. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  114. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  115. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  116. //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);//这句好像不行
  117. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  118. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
  119. config.status=WifiConfiguration.Status.ENABLED;
  120. }
  121. else
  122. {
  123. returnnull;
  124. }
  125. returnconfig;
  126. }
  127. }
  128. </span>

❻ 在android上查看wifi状态,代码如下:

不知道你的程序报的是什么错,给你一个例子吧,不过方法和你的有点差别:
public class WifiAdmin {
/**WiFi Manager**/
private WifiManager wifimanager;
/**WiFi Information**/
private WifiInfo wifiinfo;
/**Activity NetWork List**/
private List<ScanResult> netlist;
/**Configured NetWork List**/
private List<WifiConfiguration> connectedlist;
/**WiFi Lock**/
private WifiLock wifilock;

public WifiAdmin(Context context) {
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}

/**
* WiFi Operate
* */
/**Open WiFi**/
public void openWifi() {
if (!wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(true);
}
}
/**Close WiFi**/
public void closeWifi() {
if (wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(false);
}
}
/**WiFi State**/
public int checkState() {
return wifimanager.getWifiState();
}

/**
* WiFiLock Operate
* */
/**Create WiFiLock**/
public void creatWifiLock() {
wifilock = wifimanager.createWifiLock("Test");
}
/**Lock WiFi**/
public void acquireWifiLock() {
wifilock.acquire();
}
/**Clear WiFiLock**/
public void releaseWifiLock() {
if (wifilock.isHeld()) {
wifilock.release();
}
}
/**
* WiFiInfo Operate
* */
/**Get WiFiInfo**/
public WifiInfo getWifiInfo(){
wifiinfo = wifimanager.getConnectionInfo();
return wifiinfo;
}

/**
* NetWork Operate
* */
/**Scan**/
public void startScan() {
wifimanager.startScan();
netlist = wifimanager.getScanResults();
connectedlist = wifimanager.getConfiguredNetworks();
}
/**Get Configured NetWork**/
public List<WifiConfiguration> getConfiguration() {
return connectedlist;
}
/**Get Activity NetWork**/
public List<ScanResult> getWifiList() {
return netlist;
}
/**Connect a NetWork**/
public void connectConfiguration(int index) {
if (index < 0 || index > connectedlist.size()) {
return;
}
wifimanager.enableNetwork(connectedlist.get(index).networkId,true);
}
/**Add a NetWork**/
public void addNetwork(WifiConfiguration wcg) {
int wcgID = wifimanager.addNetwork(wcg);
wifimanager.enableNetwork(wcgID, true);
}
/**DisConnect a NetWork**/
public void disconnectWifi(int netId) {
wifimanager.disableNetwork(netId);
wifimanager.disconnect();
}
}

❼ Android开发如何使用代码配置手机wifi的pac地址

这里用到的手机型号为魅族M6120,其中的具体步骤如下:

1、打开手机的设置界面,需要选择无线网络这一项。

热点内容
python中文发音 发布:2025-03-17 17:32:00 浏览:9
c语言程序编译运行慢 发布:2025-03-17 17:29:44 浏览:307
苹果手机锁屏密码怎么取消 发布:2025-03-17 17:29:44 浏览:665
解析语言和编译语言 发布:2025-03-17 17:29:07 浏览:796
什么台球游戏安卓和ios能一起玩 发布:2025-03-17 17:29:06 浏览:769
天阔服务器默认管理地址 发布:2025-03-17 17:23:46 浏览:447
安卓手机大图怎么浏览 发布:2025-03-17 17:09:11 浏览:983
电脑打开网页服务器没有响应 发布:2025-03-17 17:09:11 浏览:193
手柄编程 发布:2025-03-17 17:06:07 浏览:192
iphone重启缓存 发布:2025-03-17 16:57:56 浏览:634