常规流程失败流程

常规流程

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

先(至少)添加以下权限到你的 AndroidManifest.xml 文件

在需要使用的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

}

}

// ...

}

从 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;

}

}

}

}

在适当的地方(例如在onCreate()函数中)调用requestPermissions()函数,之后就可以调用getCurrentSsid()获取 SSID 了(亲测有用)

失败流程

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

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

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

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: