android > WiFi > 新建连接
16lz
2021-01-23
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. */@Overridepublic 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 stubsid = 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);}//\\//检查是否已经存在相同ssidList<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: 41502-05 11:15:26.225: D/log2(7358): KeyMgmt: WPA_PSK Protocols: RSN02-05 11:15:26.225: D/log2(7358): AuthAlgorithms:02-05 11:15:26.225: D/log2(7358): PairwiseCiphers: TKIP CCMP02-05 11:15:26.225: D/log2(7358): GroupCiphers: TKIP CCMP02-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设备信息管理工具类
- 获取Android各种系统信息
- Android中MAC地址获取代码
- android x86 iso 下载地址 google 官方下载
- Android配置ip地址
- Android 获取SIM卡内信息(TelephonyManager)