WifiManager.NETWORK_STATE_CHANGED_ACTION 广播在Android9.0还有效,Android10.0已经无效了。
WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
String bssid = intent.getStringExtra(WifiManager.EXTRA_BSSID);
解决办法:
android10如果要用到wifi相关的api时要引用ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION权限。
添加权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name
WifiManager.NETWORK_STATE_CHANGED_ACTION 广播在Android9.0还有效,Android10.0已经无效了。WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);String bssid = intent.getStringExtra(WifiManager.EXTRA_BSSID);解决办法:android10如果要用到wifi相关的api时要引用ACCESS
然后直接获取WiFi名称
WifiManager wifiMgr = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE);
int wifiState = wifi
本文实例讲述了Android编程获取Wifi名称(SSID)的方法。分享给大家供大家参考,具体如下:
可以使用WifiManager和WifiInfo来获取当前Wifi连接信息
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Log.d(wifiInfo, wifiInfo.toString());
Log.d(SSID,wifiInfo.getSSID());
记得在Manifes
说明:本文主要说明扫码之后自动连接WiFi的一些处理,扫码的流程相对简单,网上教程也比较多,对于目前Android各个版本也没有太多变化。
问题描述:最近在做项目的时候,发现以前的项目有扫描二维码自动连接WiFi的功能,设备改了生成二维码的方式,然后发现手机无法自动连接WiFi了。
问题原因:经过代码调试发现:(我都是真机调试)
wifiManager.addNetwork(WifiCo...
```java
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
if (wifiInfo.getSupplicantState() == SupplicantState.AUTHENTICATING) {
ssid = "\"" + ssid + "\"";
这段代码首先获取了 `WifiManager` 对象,然后通过 `getConnectionInfo()` 方法获取当前连接的 Wi-Fi 信息。接下来,它调用了 `getSSID()` 方法来获取当前连接的 Wi-Fi 网络的 SSID。如果 Wi-Fi 网络正在连接中,它会在 SSID 两端添加引号。
需要注意的是,如果 Wi-Fi 网络正在连接中,`getConnectionInfo()` 方法返回的 `WifiInfo` 对象可能会包含临时连接信息,而不是最终连接信息。在这种情况下,您可能无法获取准确的 SSID。如果您需要确保获取到最终连接信息,可以注册一个 `BroadcastReceiver` 监听 `WifiManager.NETWORK_STATE_CHANGED_ACTION` 广播,并在接收到广播时获取最新的 `WifiInfo` 对象。
```java
private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
if (wifiInfo.getSupplicantState() == SupplicantState.AUTHENTICATING) {
ssid = "\"" + ssid + "\"";
// 处理 SSID
这段代码注册了一个 `BroadcastReceiver` 监听 `WifiManager.NETWORK_STATE_CHANGED_ACTION` 广播,并在接收到广播时获取最新的 `WifiInfo` 对象,并在其中处理 SSID。需要注意的是,您需要在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
同时,在应用程序中,您需要调用以下方法来注册和取消注册 `BroadcastReceiver`:
```java
// 注册 BroadcastReceiver
registerReceiver(wifiStateReceiver, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));
// 取消注册 BroadcastReceiver
unregisterReceiver(wifiStateReceiver);
这样,您就可以在 Android 应用程序中获取当前正在连接中的 Wi-Fi 网络的 SSID 了。
uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available. MDK5.37安装ARM_Compiler_5
21014
uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available. MDK5.37安装ARM_Compiler_5
向往曼彻斯特:
kotlin使用@Parcelize报错 public abstract fun describeContents(): Int defined in android.os.Parcelable
RecyclerView通过DPAD按键上下切换焦点 切换到界面外的控件时焦点会左右乱跳
在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法