如何使用android API从android中获取wifi网络的名称?
Posted
技术标签:
【中文标题】如何使用android API从android中获取wifi网络的名称?【英文标题】:How to get name of wifi-network out of android using android API? 【发布时间】:2011-04-01 17:01:42 【问题描述】:我认为我应该使用 NetworkInterface::getDisplayName。我有一些名字,但是当我选择要连接的网络时,这个名字与我看到的这个名字不同。
【问题讨论】:
有谁知道这样做需要哪些权限? android.permission.ACCESS_WIFI_STATE 【参考方案1】:简单的2行
WifiManager w=(WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifi=w.getConnectionInfo().getSSID();
记得把它放在你的清单中
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
【讨论】:
【参考方案2】:android.net.wifi.WifiInfo.getSSID
?
WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String name = wifiInfo.getSSID();
【讨论】:
对于 Xamarin C#:Android.Net.Wifi.WifiInfo.SSID
我已将提问者的答案添加到您的答案中。我希望没关系@Loxley。【参考方案3】:
这(混合和匹配来自 Marakana 和其他人的各种答案)将同时获得您想要从中提取的所有内容:
-
范围内的所有 wifi 路由器
已连接 wifi 路由器
所有存储的 wifi 网络(在您的设备上)
public String getCurrentSsid(Context context)
String ssid = null;
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo.isConnected())
final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
if (connectionInfo != null && !(connectionInfo.getSSID().equals("")))
//if (connectionInfo != null && !StringUtil.isBlank(connectionInfo.getSSID()))
ssid = connectionInfo.getSSID();
// Get WiFi status MARAKANA
WifiInfo info = wifiManager.getConnectionInfo();
String textStatus = "";
textStatus += "\n\nWiFi Status: " + info.toString();
String BSSID = info.getBSSID();
String MAC = info.getMacAddress();
List<ScanResult> results = wifiManager.getScanResults();
ScanResult bestSignal = null;
int count = 1;
String etWifiList = "";
for (ScanResult result : results)
etWifiList += count++ + ". " + result.SSID + " : " + result.level + "\n" +
result.BSSID + "\n" + result.capabilities +"\n" +
"\n=======================\n";
Log.v(TAG, "from SO: \n"+etWifiList);
// List stored networks
List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration config : configs)
textStatus+= "\n\n" + config.toString();
Log.v(TAG,"from marakana: \n"+textStatus);
return ssid;
免责声明:虽然这是工作代码,而不是伪代码,但它的唯一目的是说明从 wifi 连接中提取数据的方法,在使用前应该对其进行调整(和清理)。
【讨论】:
@Mr_and_Mrs_D 1. marakana 是 marko gargenta,许多示例项目的作者。 2.正如我所说,这是一个混合搭配,包括你提到的示例代码。 :) 检测到所有wifi后,如何连接那个wifi。 请@DennySharma 作为一个单独的问题提出。 :) 别忘了权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
【参考方案4】:
public String getWifiName(Context context)
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (manager.isWifiEnabled())
WifiInfo wifiInfo = manager.getConnectionInfo();
if (wifiInfo != null)
DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState());
if (state == DetailedState.CONNECTED || state == DetailedState.OBTAINING_IPADDR)
return wifiInfo.getSSID();
return null;
【讨论】:
以上是关于如何使用android API从android中获取wifi网络的名称?的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中使用OkHttp从web api获取json数据到RecyclerView
如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个
如何从 android 客户端进行经过身份验证的 django rest api 调用?