设为首页 收藏本站
查看: 5681|回复: 0

[经验分享] 有关WiFi SSID的获取

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-15 09:02:32 | 显示全部楼层 |阅读模式
许久没有做一些总结了,最近项目有些忙。    在获取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的方法:
1
2
3
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
final String ssid = 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代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.example.ssidtest;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class ShowSSIDActivity extends Activity {

private int deviceVersion;
  
@Override
protected void onCreate(Bundle savedInstanceState) {
  
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_show_ssid);
  WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
  WifiInfo wifiInfo = wifiManager.getConnectionInfo();
  final String ssid = wifiInfo.getSSID();
   
  findViewById(R.id.btn).setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
   
    ((TextView) findViewById(R.id.txt1)).setText(ssid);
    ((TextView) findViewById(R.id.txt2))
      .setText(whetherToRemoveTheDoubleQuotationMarks(ssid));
   }
  });
}
  
//根据Android的版本判断获取到的SSID是否有双引号
public String whetherToRemoveTheDoubleQuotationMarks(String ssid) {
  
  //获取Android版本号
  deviceVersion = Build.VERSION.SDK_INT;
   
  if (deviceVersion >= 17) {
   
   if (ssid.startsWith("\"") && ssid.endsWith("\"")) {
   
    ssid = ssid.substring(1, ssid.length() - 1);
   }
   
  }
  return ssid;
}
  
}



    其中,whetherToRemoveTheDoubleQuotationMarks(String ssid)便是根据终端版本号判断是否需要去掉双引号。
    最后别忘了获取SSID是要在manifest文件里面添加如下权限的:
1




    效果图:

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


wKiom1S2fGLDysMeAAQqiQpnxRo475.jpg
wKioL1S2fS7w17NsAAaxM8cY5Dw211.jpg
    这个终端的版本是Android 4.3 ,获取到的SSID名称是加了双引号的,没错,你看到的无线网名字就是"G.E.M",我是邓紫棋的粉丝;
    另一个终端的系统版本和获取到的SSID名称:
wKioL1S2hw6TZpwvAAGYNBGZnmU661.jpg
wKioL1S2hSiAY-RPAADBG4tLv_U532.jpg
    这个终端的版本是Android 4.1.2 ,获取到的SSID名称没有加双引号。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40856-1-1.html 上篇帖子: 为什么通过cmd打开wifi会比直接开wifi快 下篇帖子: TP-Link路由WDS设置心得
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表