失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android获取ssid 有关WiFi SSID的获取

android获取ssid 有关WiFi SSID的获取

时间:2023-12-13 07:01:42

相关推荐

android获取ssid 有关WiFi SSID的获取

许久没有做一些总结了,最近项目有些忙。

在获取Android终端连接WiFi的SSID时(也就是你当前手机连接的无线网名称),发现了一个问题,不同的Android版本下获取到的SSID是有一些差别的,当然名字不会变。

举个例子,比如我配置了WiFi的名称是haha,有些手机获取到的就是haha,而有些获取到的却是"haha"——加了双引号。有这么一个需求,控制用户连接指定的WiFi。假定允许连接的WiFi列表里面有haha,hehe,houhou,huhu四个,如果获取到用户当前连接的WiFi名称是haha,那是允许用户连接上去的,如果获取到的是"haha",呃……也应该允许用户连接的,但是haha和"haha"两者,代码里做比较是不同的,事实上获取到"haha"名称的用户,连不上WiFi。(唉,按规定连接了你允许连接的WiFi,还是上不去,用户我也只能呵呵了)。

有人说可以查找一下用户连接的WiFi名称,如果发现里面有双引号,那就去掉。这样并不妥,如果WiFi本来的名称便带有双引号呢?事实上应该从手机的Android版本来判断,先看一下获取WiFi SSID的方法:WifiManagerwifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);

WifiInfowifiInfo=wifiManager.getConnectionInfo();

finalStringssid=wifiInfo.getSSID();

getSSID()获取到的SSID名称和手机的Android版本有关,如果是Android 4.2(API Level = 17)及其以上的版本,获取到的SSID名称是有双引号的,即"haha",如果是Android 4.2以下的版本,获取到的SSID名称没有双引号,即haha。我写了一个方法,根据终端的Android版本来去掉双引号,以便使不同Android版本的用户获取到的SSID名称,可以匹配到WiFi列表里面允许连接的SSID。

布局文件的代码是比较简单的,就不贴了,两个TextView,分别显示直接获取到的SSID名称和去掉双引号之后的SSID名称,一个Button,点击后获取到当前终端连接的SSID。

Java代码如下:packagecom.example.ssidtest;

importandroid.app.Activity;

importandroid.content.Context;

.wifi.WifiInfo;

.wifi.WifiManager;

importandroid.os.Build;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.TextView;

publicclassShowSSIDActivityextendsActivity{

privateintdeviceVersion;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_show_ssid);

WifiManagerwifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);

WifiInfowifiInfo=wifiManager.getConnectionInfo();

finalStringssid=wifiInfo.getSSID();

findViewById(R.id.btn).setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

((TextView)findViewById(R.id.txt1)).setText(ssid);

((TextView)findViewById(R.id.txt2))

.setText(whetherToRemoveTheDoubleQuotationMarks(ssid));

}

});

}

//根据Android的版本判断获取到的SSID是否有双引号

publicStringwhetherToRemoveTheDoubleQuotationMarks(Stringssid){

//获取Android版本号

deviceVersion=Build.VERSION.SDK_INT;

if(deviceVersion>=17){

if(ssid.startsWith("\"")&&ssid.endsWith("\"")){

ssid=ssid.substring(1,ssid.length()-1);

}

}

returnssid;

}

}

其中,whetherToRemoveTheDoubleQuotationMarks(String ssid)便是根据终端版本号判断是否需要去掉双引号。

最后别忘了获取SSID是要在manifest文件里面添加如下权限的:

效果图:

我的一个终端的系统版本和获取到的SSID名称:

这个终端的版本是Android 4.3 ,获取到的SSID名称是加了双引号的,没错,你看到的无线网名字就是"G.E.M",我是邓紫棋的粉丝;

另一个终端的系统版本和获取到的SSID名称:

这个终端的版本是Android 4.1.2 ,获取到的SSID名称没有加双引号。

如果觉得《android获取ssid 有关WiFi SSID的获取》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。