androidxp连接隐藏wifi的wifi和连接不隐藏的wifi有什么区别

Android开发――自动连接指定SSID的wifi热点(不加密/加密)
最近在做一个项目,其中涉及到一块&自动连接已存在的wifi热点&的功能,在网上查阅了大量资料,五花八门,但其中一些说的很简单,即不能实现傻瓜式的拿来就用,有些说的很详细,但其中不乏些许错误造成功能无法实现,经过浣熊多方努力,终于成功将功能实现,遂将一点点小成就拿出来与大家分享。
&在这篇文章中,作者定义了一个wifi工具类,其中存在着操作wifi的各种方法,其中有一些错误我以改正,正确的代码如下(创建一个名为WifiAdmin.java的文件,以下代码中没有包声明和import,请自行添加):
public class WifiAdmin {&&
&&& // 定义WifiManager对象&&&
&&& private WifiManager mWifiM&&
&&& // 定义WifiInfo对象&&&
&&& private WifiInfo mWifiI&&
&&& // 扫描出的网络连接列表&&&
&&& private List&ScanResult& mWifiL&&
&&& // 网络连接列表&&&
&&& private List&WifiConfiguration& mWifiC&&
&&& // 定义一个WifiLock&&&
&&& WifiLock mWifiL&&
&&& // 构造器&&&
&&& 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 mWifiC&&
&&& // 指定配置好的网络进行连接&&&
&&& public void connectConfiguration(int index) {&&
&&&&&&& // 索引大于配置好的网络索引返回&&&
&&&&&&& if (index & mWifiConfiguration.size()) {&&
&&&&&&&&&&&&&
&&&&&&& }&&
&&&&&&& // 连接配置好的指定ID的网络&&&
&&&&&&& mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,&&
&&&&&&&&&&&&&&& true);&&
&&& public void startScan() {&&
&&&&&&& mWifiManager.startScan();&&
&&&&&&& // 得到扫描结果&&&
&&&&&&& mWifiList = mWifiManager.getScanResults();&&
&&&&&&& // 得到配置好的网络连接&&&
&&&&&&& mWifiConfiguration = mWifiManager.getConfiguredNetworks();&&
&&& // 得到网络列表&&&
&&& 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() + &:&);&&
&&&&&&&&&&& // 将ScanResult信息转换成一个字符串包&&&
&&&&&&&&&&& // 其中把包括:BSSID、SSID、capabilities、frequency、level&&&
&&&&&&&&&&& stringBuilder.append((mWifiList.get(i)).toString());&&
&&&&&&&&&&& stringBuilder.append(&/n&);&&
&&&&&&& }&&
&&&&&&& return stringB&&
&&& // 得到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();&&
//然后是一个实际应用方法,只验证过没有密码的情况:&
&&& public 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 + &\&&;&&&&
&&&&&&&&&&&
&&&&&&&&& WifiConfiguration tempConfig = this.IsExsits(SSID);&&&&&&&&&&&&
&&&&&&&&& if(tempConfig != null) {&&&
&&&&&&&&&&&&& mWifiManager.removeNetwork(tempConfig.networkId);&&&
&&&&&&&&& }&
&&&&&&&&&&&
&&&&&&&&& if(Type == 1) //WIFICIPHER_NOPASS&
&&&&&&&&& {&&
&&&&&&&&&&&&&& config.wepKeys[0] = &&;&&
&&&&&&&&&&&&&& config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);&&
&&&&&&&&&&&&&& config.wepTxKeyIndex = 0;&&
&&&&&&&&& }&&
&&&&&&&&& if(Type == 2) //WIFICIPHER_WEP&
&&&&&&&&& {&&
&&&&&&&&&&&&& 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&
&&&&&&&&& {&&
&&&&&&&&& 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)&&&
&&&&&&& List&WifiConfiguration& existingConfigs = mWifiManager.getConfiguredNetworks();&&&
&&&&&&&&&& for (WifiConfiguration existingConfig : existingConfigs)&&&&
&&&&&&&&&& {&&&
&&&&&&&&&&&& if (existingConfig.SSID.equals(&\&&+SSID+&\&&))&&&
&&&&&&&&&&&& {&&&
&&&&&&&&&&&&&&&& return existingC&&&
&&&&&&&&&&&& }&&&
&&&&&&&&&& }&&&
&&&&&&&&&&&
//分为三种情况:1没有密码2用wep加密3用wpa加密&
改动主要集中在CreateWifiInfo这个方法中,并且添加了一个私有方法:
(1)将与方法的第三个参数有关的变量都改成int型,或者使用原作者的枚举型(存在bug需要改正),但枚举会在后续的开发中遇到些困难;
(2)在if(type == 3)中注释掉&config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);&,并添加&
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);&这两句,否则当wifi热点需要输入密码时,无法加入网络。
(3)在代码末尾添加了方法IsExsits,原因在于如果按照网上介绍的方法成功加入指定的wifi后,都会在终端的wifi列表中新添加一个以该指定ssid的网络,所以每运行一次程序,列表中就会多一个相同名字的ssid。而该方法就是检查wifi列表中是否有以输入参数为名的wifi热点,如果存在,则在CreateWifiInfo方法开始配置wifi网络之前将其移除,以避免ssid的重复:
WifiConfiguration tempConfig = this.IsExsits(SSID);&&&&&&&&&&
&&&&&&&&& if(tempConfig != null) {&
&&&&&&&&& mWifiManager.removeNetwork(tempConfig.networkId);&
&&&&&&&&& }
以上便是wifi工具类的建立,之后就可以在其他部分实例化这个类,调用其中的方法完成加入指定ssid的wifi热点,还是先上代码吧,建立一个名为Test_wifiActivity.java的文件(同上,没有包含包声明和import语句):
public class Test_wifiActivity extends Activity {&
&&& /** Called when the activity is first created. */&
&&& @Override&
&&& public void onCreate(Bundle savedInstanceState) {&
&&&&&&& super.onCreate(savedInstanceState);&
&&&&&&& setContentView(R.layout.main);&
&&&&&&& WifiAdmin wifiAdmin = new WifiAdmin(this);&
&&&&&&& wifiAdmin.openWifi();&
&&&&&&& wifiAdmin.addNetwork(wifiAdmin.CreateWifiInfo(&XXX&, &XXX&, 3));&
很简单,如果是接入wifi,大体上只涉及到openWifi(打开wifi)、CreateWifiInfo(配置wifi网络信息)和addNetwork(添加配置好的网络并连接),对CreateWifiInfo进行简单的说明:第一参数是SSID的名称;第二个参数是指定SSID网络的密码,当不需要密码是置空(&&);第三个参数是热点类型:1-无密码 / 2-WEP密码验证(未测试)/ 3-WAP或WAP2 PSK密码验证。
最后就是在Manifest中添加相应的权限了:
&uses-permission android:name=&android.permission.CHANGE_NETWORK_STATE& &&/uses-permission&&
&&& &uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& &&/uses-permission&&
&&& &uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& &&/uses-permission&&
&&& &uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& &&/uses-permission&&
如果按照上述的方法进行开发,就可以很傻瓜的通过改变Test_wifiActivity.java中的CreateWifiInfo方法的三个入口参数实现加入指定SSID的wifi热点了,无论该热点是否需要密码认证。
以上就是我对于自动连接指定SSID的wifi热点的学习心得,由于水平有限有些地方可能介绍错误,希望大家多多批评指正!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'为什么安卓手机可以不用密码直接连接wifi?
今天家里来了两个亲戚,忽然发现可以不用密码直接连接我家的Wi-Fi,两个人都是安卓机,并且都用了腾讯手机管家这一应用,我观察了一下,他们俩手机直接弹出有免费wifi可使用,然后在腾讯手机管家的页面上就直接连接上了....整个过程没有用密码。我的手机是iPhone,断开试了一下,仍然需要密码。爸妈的手机因为一直连接家里的wifi所以没有察觉这个。那么为什么会出现这种状况,除了前段时间邻居问我妈要了家里的wifi密码后,再也没有告诉过别人密码啊。请问手机什么情况,是邻居将我家的wifi密码共享了吗?要不然怎么没连接过可以直接使用,而且这两个手机都是安装腾讯手机管家的安卓,求解答......
按时间排序
我有一个专门的访客网络,人走之后就关掉
我家用安卓机的亲戚来过之后我都改密码的,不然恐怕楼上楼下都能上我家网了iphone越狱之后不知道是不是也能用wifi万能钥匙之类的程序啊
首先,各种钥匙类的工具会自动搜集你的密码,然后把密码共享给附近的人,然后告诉你其实没有偷你密码。苹果手机因为iOS系统非常封闭,不允许APP软件去调用WiFi方面的配置,所以那些万能钥匙等无法读取你的无线密码,读取不了就不能共享给其他人,当然了其他人给你的密码也不能自动去填写并去连接网络,只能告诉你密码是多少然后你自己去改。PS,所有的钥匙类的工具都是将你密码大白于天下。如果你家的电脑设置了网络共享功能(很多人都是不经意打开或者是为了自己传文件方便打开了),就很容易被利用钥匙上网的人把共享的文件给偷走。其次,你邻居已经用安卓手机连过你家路由,那么那个腾讯啥玩意的就能够读取到你家密码,并且共享给全国人民。所以改密码吧,你家路由器已经成公交车,任何人都可以在你家附近随便使用你家网络。解决办法:更换路由密码,或者换一个有访客模式的智能路由器,以后家里来客人,直接开访客按钮,客人走了以后访客无线自己关。另外这类路由器还能随时告诉你谁连上网了,随时可以把不受欢迎的人踢掉!
很简单,你的密码被上传了,肯定有个安装疼迅管家的手机连过你的无线网,然后就全世界都会知道你家Wi-Fi密码
wifi万能钥匙等应用会自动上传无线密码
已有帐号?
无法登录?
社交帐号登录Android(110)
项目需要定制一下Android 4.4的设置界面,今天看一下WiFi部分的实现,首先是效果图:
代码比较简单,主要的功能在WiFiAdmin帮助类中,先看一下WiFiListActivity,代码中做了注释,就不细致说了:
package com.tchip.carlauncher.ui.
import java.util.ArrayL
import java.util.L
import com.tchip.carlauncher.C
import com.tchip.carlauncher.R;
import com.tchip.carlauncher.adapter.WiFiInfoA
import com.tchip.carlauncher.model.WifiI
import com.tchip.carlauncher.ui.dialog.WifiPswD
import com.tchip.carlauncher.ui.dialog.WifiPswDialog.OnCustomDialogL
import com.tchip.carlauncher.util.WifiA
import com.tchip.carlauncher.view.SwitchB
import android.app.A
import android.content.C
import android.net.wifi.ScanR
import android.net.wifi.WifiM
import android.os.B
import android.os.H
import android.os.M
import android.util.L
import android.view.V
import android.view.W
import android.view.WindowM
import android.view.View.OnClickL
import android.widget.AdapterV
import android.widget.B
import poundB
import android.widget.ListV
import android.widget.ProgressB
import android.widget.RelativeL
import poundButton.OnCheckedChangeL
import android.widget.T
public class WifiListActivity extends Activity {
private ArrayList&WifiInfo& wifiA
private WiFiInfoAdapter wifiInfoA
private ListView listW
private ProgressBar updateP
private Button updateB
private String wifiPassword = null;
private WifiManager wifiM
private WifiAdmin wiFiA
private List&ScanResult&
private ScanResult mScanR
private StringBuffer sb = new StringBuffer();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_wifi_list);
wiFiAdmin = new WifiAdmin(WifiListActivity.this);
initLayout();
getAllNetWorkList();
public void initLayout() {
listWifi = (ListView) findViewById(R.id.listWiFi);
RelativeLayout btnToSettingFromWiFi = (RelativeLayout) findViewById(R.id.btnToSettingFromWiFi);
btnToSettingFromWiFi.setOnClickListener(new MyOnClickListener());
updateProgress = (ProgressBar) findViewById(R.id.updateProgress);
updateProgress.setVisibility(View.INVISIBLE);
updateButton = (Button) findViewById(R.id.updateButton);
updateButton.setVisibility(View.VISIBLE);
updateButton.setOnClickListener(new MyOnClickListener());
SwitchButton switchWifi = (SwitchButton) findViewById(R.id.switchWifi);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
switchWifi.setChecked(wifiManager.isWifiEnabled());
switchWifi.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
wifiManager.setWifiEnabled(isChecked);
if (isChecked) {
listWifi.setVisibility(View.VISIBLE);
updateProgress.setVisibility(View.VISIBLE);
updateButton.setVisibility(View.INVISIBLE);
new Thread(new refreshWifiThread()).start();
listWifi.setVisibility(View.GONE);
final Handler refreshWifiHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
getAllNetWorkList();
updateProgress.setVisibility(View.INVISIBLE);
updateButton.setVisibility(View.VISIBLE);
public class refreshWifiThread implements Runnable {
public void run() {
Thread.sleep(3000);
Message message = new Message();
message.what = 1;
refreshWifiHandler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
private class MyOnClickListener implements OnClickListener {
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnToSettingFromWiFi:
case R.id.updateButton:
updateButton.setVisibility(View.INVISIBLE);
updateProgress.setVisibility(View.VISIBLE);
new Thread(new refreshWifiThread()).start();
public void getAllNetWorkList() {
wifiArray = new ArrayList&WifiInfo&();
if (sb != null) {
sb = new StringBuffer();
wiFiAdmin.startScan();
list = wiFiAdmin.getWifiList();
if (list != null) {
for (int i = 0; i & list.size(); i++) {
mScanResult = list.get(i);
WifiInfo wifiInfo = new WifiInfo(mScanResult.BSSID,
mScanResult.SSID, mScanResult.capabilities,
mScanResult.level);
wifiArray.add(wifiInfo);
wifiInfoAdapter = new WiFiInfoAdapter(getApplicationContext(),
wifiArray);
listWifi.setAdapter(wifiInfoAdapter);
wiFiAdmin.getConfiguration();
listWifi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
String wifiItemSSID = null;
public void onItemClick(android.widget.AdapterView&?& parent,
android.view.View view, int position, long id) {
Log.d(Constant.TAG, "BSSID:" + list.get(position).BSSID);
wifiItemSSID = list.get(position).SSID;
int wifiItemId = wiFiAdmin.IsConfiguration("\""
+ list.get(position).SSID + "\"");
if (wifiItemId != -1) {
if (wiFiAdmin.ConnectWifi(wifiItemId)) {
Toast.makeText(getApplicationContext(), "正在连接",
Toast.LENGTH_SHORT).show();
updateButton.setVisibility(View.INVISIBLE);
updateProgress.setVisibility(View.VISIBLE);
new Thread(new refreshWifiThread()).start();
WifiPswDialog pswDialog = new WifiPswDialog(
WifiListActivity.this,
new OnCustomDialogListener() {
public void back(String str) {
wifiPassword =
if (wifiPassword != null) {
int netId = wiFiAdmin
.AddWifiConfig(list,
wifiItemSSID,
wifiPassword);
if (netId != -1) {
wiFiAdmin.getConfiguration();
if (wiFiAdmin
.ConnectWifi(netId)) {
updateProgress
.setVisibility(View.VISIBLE);
updateButton
.setVisibility(View.INVISIBLE);
new Thread(
new refreshWifiThread())
pswDialog.show();
然后是WiFiAdmin:
package com.tchip.carlauncher.
import java.util.L
import android.content.C
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 {
* 定义一个WifiManager对象,提供Wifi管理的各种主要API,主要包含wifi的扫描、建立连接、配置信息等
private WifiManager mWifiM
private List&WifiConfiguration& wifiConfigL
private WifiInfo mWifiI
private List&ScanResult& mWifiL
private List&WifiConfiguration& mWifiC
WifiLock mWifiL
public static final int TYPE_NO_PASSWD = 0x11;
public static final int TYPE_WEP = 0x12;
public static final int TYPE_WPA = 0x13;
public WifiAdmin(Context context) {
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
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 createWifiLock() {
mWifiLock = mWifiManager.createWifiLock("test");
* 得到配置好的网络
public List&WifiConfiguration& getWiFiConfiguration() {
return mWifiC
* 指定配置好的网络进行连接
public void connetionConfiguration(int index) {
if (index & mWifiConfigurations.size()) {
mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId,
public void startScan() {
mWifiManager.startScan();
mWifiList = mWifiManager.getScanResults();
mWifiConfigurations = mWifiManager.getConfiguredNetworks();
* 得到网络列表
public List&ScanResult& getWifiList() {
return mWifiL
* 查看扫描结果
public StringBuffer lookUpScan() {
StringBuffer sb = new StringBuffer();
for (int i = 0; i & mWifiList.size(); i++) {
sb.append("Index_" + new Integer(i + 1).toString() + ":");
sb.append((mWifiList.get(i)).toString()).append("\n");
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
public int getIpAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
* 得到连接的ID
public int getNetWordId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
* 得到wifiInfo的所有信息
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
* 添加一个网络并连接
* configuration
public void addNetwork(WifiConfiguration configuration) {
int wcgId = mWifiManager.addNetwork(configuration);
mWifiManager.enableNetwork(wcgId, true);
public 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 + "\"";
WifiConfiguration tempConfig = this.isExsits(SSID);
if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
if (Type == 1)
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
if (Type == 2)
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 == 3)
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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers
.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.ENABLED;
private WifiConfiguration isExsits(String ssid) {
WifiConfiguration config = new WifiConfiguration();
if (mWifiList.size() & 0) {
for (int i = 0; i & mWifiList.size(); i++) {
if (mWifiList.get(i).SSID.equals(ssid)) {
config = mWifiConfigurations.get(i);
* 断开指定ID的网络
public void disConnectionWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
* 连接指定Id的WIFI
public boolean ConnectWifi(int wifiId) {
for (int i = 0; i & wifiConfigList.size(); i++) {
WifiConfiguration wifi = wifiConfigList.get(i);
if (wifi.networkId == wifiId) {
while (!(mWifiManager.enableNetwork(wifiId, true))) {
Log.i("ConnectWifi",
String.valueOf(wifiConfigList.get(wifiId).status));
return true;
return false;
* 得到Wifi配置好的信息
public void getConfiguration() {
wifiConfigList = mWifiManager.getConfiguredNetworks();
for (int i = 0; i & wifiConfigList.size(); i++) {
Log.i("getConfiguration", wifiConfigList.get(i).SSID);
Log.i("getConfiguration",
String.valueOf(wifiConfigList.get(i).networkId));
* 判定指定WIFI是否已经配置好,依据WIFI的地址BSSID,返回NetId
public int IsConfiguration(String SSID) {
Log.i("IsConfiguration", String.valueOf(wifiConfigList.size()));
for (int i = 0; i & wifiConfigList.size(); i++) {
Log.i(wifiConfigList.get(i).SSID,
String.valueOf(wifiConfigList.get(i).networkId));
if (wifiConfigList.get(i).SSID.equals(SSID)) {
return wifiConfigList.get(i).networkId;
return -1;
* 添加指定WIFI的配置信息,原列表不存在此SSID
* wifiList
public int AddWifiConfig(List&ScanResult& wifiList, String ssid, String pwd) {
int wifiId = -1;
for (int i = 0; i & wifiList.size(); i++) {
ScanResult wifi = wifiList.get(i);
if (wifi.SSID.equals(ssid)) {
Log.i("AddWifiConfig", "equals");
WifiConfiguration wifiCong = new WifiConfiguration();
wifiCong.SSID = "\"" + wifi.SSID + "\"";
wifiCong.preSharedKey = "\"" + pwd + "\"";
wifiCong.hiddenSSID = false;
wifiCong.status = WifiConfiguration.Status.ENABLED;
wifiId = mWifiManager.addNetwork(wifiCong);
if (wifiId != -1) {
return wifiId;
return wifiId;
密码对话框比较简单:
package com.tchip.carlauncher.ui.
import com.tchip.carlauncher.R;
import android.app.D
import android.content.C
import android.os.B
import android.view.V
import android.widget.B
import android.widget.EditT
public class WifiPswDialog extends Dialog {
private Button cancelB
private Button okB
private EditText pswE
private OnCustomDialogListener customDialogL
public WifiPswDialog(Context context, OnCustomDialogListener customListener) {
super(context);
customDialogListener = customL
* 定义dialog的回调事件
public interface OnCustomDialogListener {
void back(String str);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wifi_config_dialog);
setTitle("输入密码");
pswEdit = (EditText) findViewById(R.id.wifiDialogPsw);
cancelButton = (Button) findViewById(R.id.wifiDialogCancel);
okButton = (Button) findViewById(R.id.wifiDialogCertain);
cancelButton.setOnClickListener(buttonDialogListener);
okButton.setOnClickListener(buttonDialogListener);
private View.OnClickListener buttonDialogListener = new View.OnClickListener() {
public void onClick(View view) {
if (view.getId() == R.id.wifiDialogCancel) {
pswEdit = null;
customDialogListener.back(null);
customDialogListener.back(pswEdit.getText().toString());
dismiss();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:494800次
积分:5084
积分:5084
排名:第3835名
原创:123篇
评论:115条
阅读:1365
阅读:1090
阅读:5540
阅读:8869
阅读:6091
阅读:30473
(4)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)(5)

我要回帖

更多关于 电脑如何连接隐藏wifi 的文章

 

随机推荐