打开wifi热点以及连接wifi
2012-09-01 20:30
197 查看
添加权限
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
打开wifi热点:
连接wifi热点:
网上看见别人封装了一个比较好的例子:(http://www.eoeandroid.com/thread-195120-1-1.html)
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
打开wifi热点:
package test.sam; public class HelloanActivity extends Activity implements View.OnClickListener { private TextView textView = null; private WifiManager wifiManager = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("HelloanActivity -> oncreate!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); setContentView(R.layout.main); textView = (TextView)findViewById(R.id.main_TV); findViewById(R.id.main_button).setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.main_button: try { wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration netConfig = new WifiConfiguration(); netConfig.SSID = "yoyo"; netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); //通过反射调用设置热点 Method method = wifiManager.getClass().getMethod( "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); //返回热点打开状态 System.out.println("hotspot状态 = "+(Boolean) method.invoke(wifiManager, netConfig, true)); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } public String GetIpAddress() { Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { InetAddress ip = ips.nextElement(); System.out.println(ip.getHostAddress()+" "+ip.getHostName()); } } } catch (Exception e) { e.printStackTrace(); } return ""; } }
连接wifi热点:
package test.sam.helloan2; public class Helloan2Activity extends Activity implements View.OnClickListener { private WifiManager wifiManager; private StringBuilder sb; private List<ScanResult> wifiList; private WifiReceiver wifiReceiver; private WifiConfiguration wifiConfiguration = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.main_button).setOnClickListener(this); findViewById(R.id.main_button2).setOnClickListener(this); wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifiReceiver = new WifiReceiver(); registerReceiver(wifiReceiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); wifiManager.startScan(); } @Override public void finish() { super.finish(); unregisterReceiver(wifiReceiver); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.main_button: try { System.out.println("click main button"); WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"yoyo\""; config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; System.out.println("连接wifi = "+config.SSID); int resId = wifiManager.addNetwork(config); boolean isSucc = wifiManager.enableNetwork(resId, true); System.out.println("isSucc = "+isSucc); } catch (Exception e) { e.printStackTrace(); } break; case R.id.main_button2: try { WifiInfo wifiInfo = wifiManager.getConnectionInfo(); System.out.println("wifiInfo.getIpAddress() = "+wifiInfo.getIpAddress()); getLocalIpAddress(); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } 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(); System.out.println(inetAddress); } } } catch (Exception ex) { ex.printStackTrace(); } return null; } private final class WifiReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(wifiList == null) { List<WifiConfiguration> configurations = wifiManager.getConfiguredNetworks(); for(WifiConfiguration configuration:configurations) { System.out.println("configuration.SSID = "+configuration.SSID); if(configuration.SSID.contains("samyoyo")); { wifiConfiguration = configuration; break; } } }else { System.out.println("get wifi!!"); } } } }
网上看见别人封装了一个比较好的例子:(http://www.eoeandroid.com/thread-195120-1-1.html)
public class WifiConnect { WifiManager wifiManager; // 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况 public enum WifiCipherType { WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID } // 构造函数 public WifiConnect(WifiManager wifiManager) { this.wifiManager = wifiManager; } // 打开wifi功能 private boolean OpenWifi() { boolean bRet = true; if (!wifiManager.isWifiEnabled()) { bRet = wifiManager.setWifiEnabled(true); } return bRet; } // 提供一个外部接口,传入要连接的无线网 public boolean Connect(String SSID, String Password, WifiCipherType Type) { if (!this.OpenWifi()) { return false; } while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) { try { Thread.currentThread(); Thread.sleep(100); } catch (InterruptedException ie) { } } WifiConfiguration wifiConfig = this .CreateWifiInfo(SSID, Password, Type); // if (wifiConfig == null) { return false; } WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) { wifiManager.removeNetwork(tempConfig.networkId); } int netID = wifiManager.addNetwork(wifiConfig); boolean bRet = wifiManager.enableNetwork(netID, false); return bRet; } // 查看以前是否也配置过这个网络 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 + "\""; if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == WifiCipherType.WIFICIPHER_WEP) { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; 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 == 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.status = WifiConfiguration.Status.ENABLED; } else { return null; } return config; } }
相关文章推荐
- android SDIO error导致wifi无法打开或者连接热点异常的问题
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接(转)
- android 代码设置、打开wifi热点及热点的连接
- android 生成wifi热点以及扫描连接wifi
- Android7.1.1版本实现wifi的打开关闭以及热点的设置
- android代码设置、打开WLAN wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- Android 通过代码设置、打开wifi热点及热点连接的实现代码
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android 代码设置、打开wifi热点及热点的连接
- android中wifi属性的介绍以及连接到指定的wifi
- Android WiFi 扫描和连接热点
- Linux 开发板4G转WiFi热点 手机连接热点上网(三 WiFi模块的移植及AP的建立)