SSID为wifi的名称

BSSID为wifi的mac地址

level为wifi的信号强度

main_activity.java:

package com.example.myapplication;import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.util.Timer;
import java.util.TimerTask;
import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import java.util.List;
import android.net.wifi.ScanResult;public class MainActivity extends AppCompatActivity {private WifiInfo wifiInfo = null;       //获得的Wifi信息private WifiManager wifiManager = null; //Wifi管理器private Handler handler;private int level;                      //信号强度值private String macAddress;              //wifi信号BSSID值List<ScanResult> listb;@SuppressLint("HandlerLeak")@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获得WifiManagerwifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);// 使用定时器,每隔5秒获得一次信号强度值Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {@Overridepublic void run() {listb = wifiManager.getScanResults();//数组初始化要注意String[] listSSID = new String[listb.size()];String[] listBSSID = new String[listb.size()];int[] listLevel = new int[listb.size()];if (listb != null) {for (int i = 0; i < listb.size(); i++) {ScanResult scanResult = listb.get(i);listSSID[i] = scanResult.SSID;listBSSID[i] = scanResult.BSSID;listLevel[i] = scanResult.level;}}String[] listSSID0 = new String[listb.size()];String[] listBSSID0 = new String[listb.size()];int[] listLevel0 = new int[listb.size()];if (listb == null) {listSSID0[0] = "NoWiFi";listBSSID0[0] = "NoWiFi";listLevel[0] = -200; //-200默认没有wifi} else {listSSID0 = listSSID;listBSSID0 = listBSSID;listLevel0 = listLevel;}for (int i = 0; i < listb.size(); i++) {Log.d("wifi", listSSID0[i] + "//" + listBSSID0[i] + "//" + listLevel0[i]);}Log.d("wifi", "=======================");wifiInfo = wifiManager.getConnectionInfo();//获得信号强度值level = wifiInfo.getRssi();macAddress = wifiInfo.getBSSID();Message msg = new Message();handler.sendMessage(msg);}}, 1000, 5000);// 使用Handler实现UI线程与Timer线程之间的信息传递,每5秒告诉UI线程获得wifiIntohandler = new Handler() {@Overridepublic void handleMessage(Message msg) {Toast.makeText(MainActivity.this,"信号强度:" + level + "  BSSID: " + macAddress, Toast.LENGTH_SHORT).show();}};}
}

AndroidManifest.xml中获取wifi的权限:

    <!--获取wifi权限--><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

参考:https://blog.csdn.net/zoukai1587/article/details/89639169

对于Android6.0以上版本,需要添加兼容性:

MainActivity.java代码:

package com.example.zlf_empty;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;import java.util.Timer;
import java.util.TimerTask;import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;import java.util.List;import android.net.wifi.ScanResult;
import java.io.IOException;
import android.os.Build;
import android.Manifest;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;public class MainActivity extends AppCompatActivity {private WifiInfo wifiInfo = null;       //获得的Wifi信息private WifiManager wifiManager = null; //Wifi管理器private Handler handler;private int level;                      //信号强度值private String macAddress;              //wifi信号BSSID值List<ScanResult> listb;private static final int REQUEST_CODE_ACCESS_COARSE_LOCATION = 1;@SuppressLint("HandlerLeak")@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获得WifiManagerwifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);// 判断wifi是否开启if(! wifiManager.isWifiEnabled()){if(wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING)wifiManager.setWifiEnabled(true);}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//如果 API level 是大于等于 23(Android 6.0) 时//判断是否具有权限if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {//判断是否需要向用户解释为什么需要申请该权限if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_COARSE_LOCATION)) {//showToast("自Android 6.0开始需要打开位置权限");}//请求权限ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},REQUEST_CODE_ACCESS_COARSE_LOCATION);}}// 使用定时器,每隔5秒获得一次信号强度值Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {@Overridepublic void run() {listb = wifiManager.getScanResults();Log.d("wifi","listb"+listb);Log.d("wifi","listb.size()"+listb.size());//数组初始化要注意String[] listSSID = new String[listb.size()];String[] listBSSID = new String[listb.size()];int[] listLevel = new int[listb.size()];if (listb != null) {for (int i = 0; i < listb.size(); i++) {ScanResult scanResult = listb.get(i);listSSID[i] = scanResult.SSID;listBSSID[i] = scanResult.BSSID;listLevel[i] = scanResult.level;}}String[] listSSID0 = new String[listb.size()];String[] listBSSID0 = new String[listb.size()];int[] listLevel0 = new int[listb.size()];if (listb == null) {listSSID0[0] = "NoWiFi";listBSSID0[0] = "NoWiFi";listLevel[0] = -200; //-200默认没有wifi} else {listSSID0 = listSSID;listBSSID0 = listBSSID;listLevel0 = listLevel;}for (int i = 0; i < listb.size(); i++) {Log.d("wifi", listSSID0[i] + "//" + listBSSID0[i] + "//" + listLevel0[i]);}Log.d("wifi", "=======================");wifiInfo = wifiManager.getConnectionInfo();//获得信号强度值level = wifiInfo.getRssi();macAddress = wifiInfo.getBSSID();Message msg = new Message();handler.sendMessage(msg);}}, 1000, 5000);// 使用Handler实现UI线程与Timer线程之间的信息传递,每5秒告诉UI线程获得wifiIntohandler = new Handler() {@Overridepublic void handleMessage(Message msg) {Toast.makeText(MainActivity.this,"信号强度:" + level + "  BSSID: " + macAddress, Toast.LENGTH_SHORT).show();}};}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {if (requestCode == REQUEST_CODE_ACCESS_COARSE_LOCATION) {if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {//用户允许改权限,0表示允许,-1表示拒绝 PERMISSION_GRANTED = 0, PERMISSION_DENIED = -1//permission was granted, yay! Do the contacts-related task you need to do.//这里进行授权被允许的处理} else {//permission denied, boo! Disable the functionality that depends on this permission.//这里进行权限被拒绝的处理}} else {super.onRequestPermissionsResult(requestCode, permissions, grantResults);}}}

AndroidManifest.xml增加的权限:

    <!--Android6.0以上wifi权限获取--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

参考链接:http://www.pianshen.com/article/2568263532/

Android Studio获取wifi列表等信息相关推荐

  1. android wifi动画显示,Android获取WiFi列表的正确用法

    最近有个需求,需要做一个获取WiFi列表的功能,也在网上找了一些资料,但有些资料是有问题的,然后经过自己的摸索,总结如下: 本地环境: Android Studio版本:3.0.1:DEMO APK ...

  2. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

  3. 【Android Studio安装部署系列】十一、Android studio获取数字签名信息

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 下面介绍下调试版本和发布版本获取数字签名的方法,通过以下方法可以获取到SHA1和MD5. 一般在使用分享功能,在第三方平台中创建应用 ...

  4. Android系统信息获取 之十四:获取WIFI热点相关信息

    当在Android设备终端上使用Wifi热点的时候,需要获知Wifi热点的运行状态,热点是否打开,连接到该WIFI热点的设备数量,以及连接设备的具体IP和MAC地址. 使用re文件管理器去" ...

  5. java 获取wifi_获取wifi列表并连接wifi

    一.获取wifi列表 获取wifi列表需要用wifiManager.startScan();进行扫描,扫描结果的列表使用List 保存 扫描步骤: wifiManager.startScan(); / ...

  6. Android7.0+ 获取WiFi列表以及连接WiFi

    获取WiFi列表并连接 这段时间项目中涉及到需要获取WiFi列表以及连接,在这里记录下 其中就有一个坑,在Android7.0以上还需要打开定位(也就是手机中"位置信息") Wif ...

  7. iOS 无法获取 WiFi 列表?一定是因为你不知道这个框架

    iOS 9 发布之后,苹果推出了 NetworkExtension,利用这个框架可以实现很多和网络相关的操作.本文主要介绍怎样使用其中的 NEHotspotHelper 进行设备 WiFi 列表的获取 ...

  8. Android获取电子签名内容,Android Studio 获取app签名

    今天在学习整合高德地图的时候,需要app的sha1码. image.png Android Studio 获取app签名的步骤如下: 1.Build下的Generate Signed APK imag ...

  9. Android Studio 获取应用签名 MD5和SHA1等

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.配置module的build.gradle 二.使用步骤 总结 前言 平时开发,很多第三方需要配置应用签名,比如百 ...

最新文章

  1. Android Gradle基础实践
  2. 在Heroku上创建node.js应用程序时,我应该将node_modules检入git吗?
  3. html5页面常用的代码,最全的 HTML5 知识汇总
  4. contenteditable元素的placeholder输入提示语设置
  5. Oracle 并行查询
  6. 窗函数性能分析——MATLAB
  7. JDK、JRE、JVM的区别与联系
  8. GO语言练习:第二个工程--模拟音乐播放器
  9. 教学转用计算机,一种计算机教学用旋转显示屏的制作方法
  10. Oracle学习 第20天 PL/SQL导入
  11. 桌面电源、USB、读卡总集线器的想法
  12. centos SSH免密登录
  13. 如何进行cad地理配准_地理配准和空间校正操作流程
  14. 如何自制daplink_DAPLINK功能介绍
  15. 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-代码篇
  16. 损失函数 Loss、梯度 grad、参数 ω 和 学习率 lr 之间的关系
  17. linux系统开机自动锁定键盘,设置linux开机启动小键盘的详细教程设置linux开机启动小键盘的图文教程...
  18. Leetcode1859:将句子排序
  19. 关于Matlab中Max函数的用法
  20. 一个简单的拼音输入法,实现常用汉字的输入

热门文章

  1. C++ | C++ 重载运算符和重载函数
  2. UE4 /UE5 PC/安卓优化
  3. html 禁止页面回弹,JavaScript禁止微信浏览器下拉回弹效果
  4. skip-gram模型理解
  5. SPDR年内增量尽数被抹 市场看空金市
  6. 蚂蚁集团暂缓上市:致歉投资者
  7. install xmms
  8. 一个普通it人的十年回顾_十年高考试题中的it用法解析
  9. Python全栈开发【基础二】
  10. 树莓派4B-buster安装ROS Melodic流程