当前位置: 首页 > news >正文

Android Studio API 33 获取当前连接的WIFI名称

      • 常规流程
      • 失败流程

常规流程

以下内容在 API 33 成功实现,低版本API还请自行尝试(仅推荐 API 29 - 33 用户食用)

  1. 先(至少)添加以下权限到你的 AndroidManifest.xml 文件
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  1. 在需要使用的Activity类中,添加以下代码:
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;public class MainActivity extends AppCompatActivity {// ...private void getCurrentSsid() {WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();if (wifiInfo != null) {String ssid  = wifiInfo.getSSID();// Remove quotes if presentif (ssid.startsWith("\"") && ssid.endsWith("\"")) {ssid = ssid.substring(1, ssid.length() - 1);}Log.d("Current SSID: ", ssid);  // 可以用sout替换hh}}// ...
}
  1. 从 Android 10 (API 29)开始,需要确保 已经获取了定位权限
    requestPermissions() 函数会请求所需的定位权限,如果已经获取到这些权限,那么它会直接调用getCurrentSsid()函数获取当前连接的WiFi网络的名称,否则,它会请求这些权限。当用户做出是否允许这些权限请求的决定后,系统会调用onRequestPermissionsResult()函数,这个函数会检查请求的结果,如果用户已经同意了请求,那么它会再次调用函数获取当前连接的WiFi网络的名称。(当然,你可以修改这个函数为 仅仅获取定位权限)
import android.Manifest;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;public class MainActivity extends AppCompatActivity {// ...private static final int PERMISSIONS_REQUEST_CODE = 123;private void requestPermissions() {String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};if (ContextCompat.checkSelfPermission(this.getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED) {getCurrentSsid();} else {ActivityCompat.requestPermissions(this, permissions, PERMISSIONS_REQUEST_CODE);}}@Overridepublic void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {switch (requestCode) {case PERMISSIONS_REQUEST_CODE: {if (grantResults.length > 0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {getCurrentSsid();}return;}}}
}
  1. 在适当的地方(例如在onCreate()函数中)调用requestPermissions()函数,之后就可以调用getCurrentSsid()获取 SSID 了(亲测有用)

失败流程

如果失败了,请考虑以下情况:

  • 你有没有打开 手机WIFI 啊啊啊!!!
  • 需要 ACCESS_WIFI_STATE 等权限
  • 对于 Android 10 及以上版本,需要 ACCESS_FINE_LOCATION 权限
  • 对于后台应用,在 Android 10 及以上版本中,无法获取 SSID
  • 用户的位置设置应打开

检查过了还是不行就另寻其他方法吧 QwQ

http://www.lryc.cn/news/109778.html

相关文章:

  • ICCV 2023 | 半监督三维目标检测新SOTA:密集匹配和量化补偿
  • python+django+mysql项目实践三(用户管理)
  • Java多线程 | 操作线程的方法详解
  • 【ConcurrentHashMap1.7源码】十分钟带你深入ConcurrentHashMap并发解析
  • 程序框架-事件中心模块-观察者模式
  • 通过AOP的ProceedingJoinPoint获取方法信息
  • 【JavaSE】初步认识类和对象
  • python中的matplotlib画饼图(数据分析与可视化)
  • 用Rust实现23种设计模式之 职责链模式
  • 进销存管理中的技术创新和数字化转型
  • 与“云”共舞,联想凌拓的新科技与新突破
  • 【超细节】Vue3组件事件怎么声明,defineEmits与emit
  • java Selenium 实现简单的网页操作
  • (数据库系统概论|王珊)第一章绪论-第一节:数据库系统概论
  • 深入理解TCP三次握手:连接可靠性与安全风险
  • 基于人工智能的智能矿山解决方案
  • vue-cli3项目优化
  • Windows环境下VSCode安装PlatformIO Cero报错ERROR: HTTP error 403 while getting
  • git bash 安装sdkadmin
  • 如何在IEEE论文中添加伪代码pseudocode
  • 【css】css隐藏元素
  • JUC并发编程(二)ForkJoinPool、Future、CompletableFuture、CAS
  • 大数据课程F2——HIve的安装操作
  • 华为云hcip核心知识笔记(存储服务规划)
  • 四、JVM-对象内存模型
  • 2023-08-05 LeetCode每日一题(合并两个有序链表)
  • 【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十七天 47/50
  • 离散型制造业生产管理云MES系统解决方案
  • 【Vue】全家桶介绍
  • 【雕爷学编程】MicroPython动手做(33)——物联网之天气预报2