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

在获取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的方法: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代码如下: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文件里面添加如下权限的:

效果图:

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

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

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

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

android获取ssid,有关WiFi SSID的获取相关推荐

  1. Swift获取当前连接WIFI名称,IOS获取当前连接WIFI名称

    swift 版本import SystemConfiguration.CaptiveNetworkvar wifiName : String = ""let wifiInterfa ...

  2. 【Swift】在Swift中获取当前的wifi SSID

    2019独角兽企业重金招聘Python工程师标准>>> func getSSID() -> String? {let interfaces: CFArray! = CNCopy ...

  3. Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC

    获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...

  4. 【unknow ssid】两种办法获取WIFI名称99%可解决

    复工第一天,今天早上客户反映某品牌手机Android10以上无法获取wifi名称,我寻思不就定位权限嘛,一看权限都有的,就是获取不到wifi名称. 原因: 不知道 解决方案:写了两个方法,如果方法1无 ...

  5. 解决Android 8.0和9.0无法获取SSID (unknow ssid)

    一直都在做wifi相关的东西 今天遇到一个问题是8.0的机型无法获取到ssid 然后就查询了一番 终于找到解决方案 wifi名称获取代码 WifiManager my_wifiManager = (( ...

  6. android 获取ssid 为unknown ssid解决办法

    我用的是华为Nova手机 鸿蒙系统,开发Android APP  用如下代码获取wifi ssid时为unknown ssid: /*** 获得SSID*/public static String g ...

  7. iOS 获取wifi ssid 名称

    SSID全称Service Set IDentifier, 即Wifi网络的公开名称.在IOS 4.1以上版本提供了公开的方法来获取该信息. [html] view plaincopy #import ...

  8. android10无法获取ssid,解决Android 8.0和9.0无法获取SSID (unknow ssid)

    一直都在做wifi相关的东西 今天遇到一个问题是8.0的机型无法获取到ssid 然后就查询了一番 终于找到解决方案 wifi名称获取代码 WifiManager my_wifiManager = (( ...

  9. flutter 获取wifi名称以及Android10获取不到wifi名称<unknown ssid>

    插件 我使用的是wifi_iot这个插件,版本是0.2.2,flutter版本是1.20.0. dependencies:flutter:sdk: flutterwifi_iot: ^0.2.2 获取 ...

  10. android获取连接wifi名称,android 获取当前连接WIFI名称的有关问题

    android 获取当前连接WIFI名称的问题 我在程序内通过以下方法获取当前连接的WIFI名称(SSID),这个也是网上找别人的,但在我程序内就获取不到呢? 1.在AndroidManifest.x ...

最新文章

  1. red hat DHCP服务器配置
  2. iOS 使用UI控件的外观协议UIAppearance进行设置默认UI控件样式
  3. 99%的人都会用错或者不会看的N折验证
  4. intellij无法输入中文
  5. zookeeper学习03 使用场景
  6. C语言,去你的策略模式!
  7. flask总结之session,websocket,上下文管理
  8. 申通快递:1月快递服务业务收入25.65亿元 同比增长21.27%
  9. 面向机器学习的自然语言标注1.2 语料库语言学简史
  10. VS2019添加自定义发布本地的Nuget(.nupkg文件)
  11. 音乐播放小程序demo
  12. Arduino IDE 烧录 ESP8266教程
  13. freeradius linux,FreeRadius 安装过程记录
  14. OSChina 周三乱弹 —— 野生公交车正在河边喝水
  15. 详谈利用系统漏洞及mysql提权
  16. 一起学习LLVM(一)
  17. matlab计算六面体的体积,六面体单元体积坐标方法-工程力学-清华大学.PDF
  18. IDEA如何创建带有 webapp 目录的 maven 项目
  19. 浅谈“双平面”冗余架构
  20. SSM + Activiti5 简单OA系统

热门文章

  1. 2022年贵州省职业院校技能大赛中职组网络安全赛项规程
  2. 交通标志图——警告标志
  3. Symbian使用TTime类获取系统时间并转换为描述符
  4. C# Xml序列化Dictionary
  5. 腾讯会议分享屏幕,隐藏演讲者模式
  6. 当前的安全设置不允许从该位置下载文件
  7. linux 下安装redis并设置开机自启动
  8. 字节序: big-endian vs little-endian
  9. 钉钉视频下载地瓜网络钉钉视频下载器
  10. SPR EAD NET 6