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

这篇具有很好参考价值的文章主要介绍了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 present
            if (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);
        }
    }

    @Override
    public 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文章来源地址https://www.toymoban.com/news/detail-626002.html

到了这里,关于Android Studio API 33 获取当前连接的WIFI名称的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio配置adb使用WIFI连接手机调试安卓程序

    安装adb参考:https://www.linmeimei.top/2023/03/02/flutter-adb 手机设置 打开开发者模式(用HUAWEI举例) 【设置】→【关于手机】→【版本号】→ 连续点击5次即可进入开发者模式 打开USB调试 【设置】→【系统和更新】→【开发人员选项】→开启【USB调试】开关→开启【\\\"仅充电\\\"模式下允许

    2024年02月04日
    浏览(55)
  • Android Studio修改应用名称及应用图标

    找到src/main/AndroidManifest.xml文件: android:label后面配置的就是应用名称配置路径或应用名称。 方式1:android:label=\\\"xxx应用\\\"(应用名称显示xxx应用) 方式2:android:label=\\\"@string/app_name\\\"(ctrl+鼠标左键查看string.xml文件,应用名称显示\\\"app name\\\"字符串配置的值。 1、右键点击应用项目文件

    2024年02月11日
    浏览(58)
  • Android源码解析--享元设计模式,handler消息传递机制(基于Android API 33 SDK分析)

    使用共享对象可有效地支持大量的细粒度的对象 核心:对象复用。 1.1 享元模式Demo 火车票购票Demo 缓存对象在一个Map中。下面我们还会分析 用法 跟进去 这就是最明显的一个享元设计模式。 Android 开发一个知识点:UI 不能够在子线程中更新。 我们跟进post函数 Handler 传递了一个

    2024年02月11日
    浏览(35)
  • Android Studio实机同WIFI调试

    1.点击Pair using Wi-Fi 2.手机扫描跳出来的二维码 小米手机可搜索无线调试进行adb 调试

    2024年02月07日
    浏览(52)
  • android 获取当前系统选择的语言

    获取当前系统选择的语言的Java代码: Locale currentLocale = Locale.getDefault(); String currentLanguage = currentLocale.getLanguage(); String currentCountry = currentLocale.getCountry(); String currentLocaleString = currentLocale.toString();   其中,`currentLanguage`为当前语言的ISO 639-1代码,例如:`en`表示英语,`zh`表示中文

    2024年02月08日
    浏览(48)
  • Android studio 运行警告 We recommend using a newer Android Gradle plugin to use compileSdk = 33

    刚开始运行Android studio就出现这条警告,虽然对项目的运行没有什么影响但是作为一个程序员怎么可能让bug出现在自己的眼前 这句警告的意思是 建议使用一个新的Android Gradle插件去使用compileSdk = 33 这个 Android Gradle 插件 (7.1.2)已经通过了compileSdk = 32的测试 可以通过添加 androi

    2024年02月11日
    浏览(44)
  • android连接指定wifi

    在Android设备上,我们可以通过代码连接到特定的WiFi网络。这在许多应用中都是非常有用的,例如自动连接到家庭WiFi网络,或者在商家的应用中连接到特定店铺的WiFi网络。 本文将教您如何使用Android代码连接到指定的WiFi网络,并提供示例代码来帮助您实现此功能。 前提条件

    2024年01月16日
    浏览(40)
  • android通过代码连接wifi

    Android SDK API 29(对应Android 10)以下,可以在app之中通过代码直接设置wifi名称和密码进行连接。 API 29及其以上版本,增加了动态管理权限功能,弃用了之前的接口,同时app连接wifi时必须通过用户同意,具体方式是弹出一个页面显示要连接的wifi,用户点击连接之后再返回app。

    2024年02月20日
    浏览(38)
  • android adb命令获取处于当前屏幕的Activity

    android adb命令获取处于当前屏幕的Activity 使用adb命令:   输出,例如: ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities from top to bottom):   * Task{38ef601 #5281 type=standard A=10450:com.example.myapplication U=0 visible=true visibleRequested=true mode=fullscreen translucent=false sz=1}     mResizeMo

    2024年02月15日
    浏览(47)
  • Android adb命令获取当前Activity或者Fragment

    用adb命令查看下面Demo处于 NO.3 Fragment 时的 Activity 和 Fragment 信息。 输出结果如下: 上面的 com.example.who/com.example.who.ui.activity.SecondActivity} 可以分成两部分看: / 前的部分是包名, / 后的部分是当前 Activity 的类全名。 该命令会输出堆栈中全部的窗口信息。 输出结果如下, Se

    2024年02月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包