常规流程
以下内容在 API 33 成功实现,低版本API还请自行尝试(仅推荐 API 29 - 33 用户食用)
- 先(至少)添加以下权限到你的 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" />
- 在需要使用的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 了(亲测有用)
失败流程
如果失败了,请考虑以下情况:文章来源:https://www.toymoban.com/news/detail-626002.html
- 你有没有打开 手机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模板网!