我试图找到,如果 scanResult
是当前连接wifi网络。
I'm trying to find if scanResult
is the current connected wifi network.
这是我的code
public boolean IsCurrentConnectedWifi(ScanResult scanResult)
{
WifiManager mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo currentWifi = mainWifi.getConnectionInfo();
if(currentWifi != null)
{
if(currentWifi.getSSID() != null)
{
if(currentWifi.getSSID() == scanResult.SSID)
return true;
}
}
return false;
}
我对得到scanresult没有问题。
I have no problem on getting scanresult.
总是我收到currentWifi为空。
Always I'm getting currentWifi is null.
我在哪里错了,还是有其他方法来做到这一点?
Where am I wrong or Is there any alternative method to do this?
最可能的是,你已经找到答案:currentWifi.getSSID()被引用在大多数情况下,scanResult.SSID没有(当然你不能使用= =对字符串:))
Most probably you have already found answer: currentWifi.getSSID() is quoted in most cases where scanResult.SSID is not (and of course you must not use == on strings :)).
尝试这样的事情,它返回当前的SSID或空:
Try something like this, it returns current SSID or null:
public static 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 && !StringUtil.isBlank(connectionInfo.getSSID())) {
ssid = connectionInfo.getSSID();
}
}
return ssid;
}
也是必需的权限:
also permissions are required:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
StringUtil不是一个标准的Android类,这样你就可以使用文本实用程序来代替。在code,那么看起来像这样
StringUtil is not a standard Android class, so you can use TextUtils instead. The code then looks like this
public static 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 && !TextUtils.isEmpty(connectionInfo.getSSID())) {
ssid = connectionInfo.getSSID();
}
}
return ssid;
}