如何知道手机何时连接到 WiFi 网络



我一直在寻找一种方法来知道我的Android智能手机何时连接到WiFi网络并准备好连接到某个服务器以交换数据。 我已经尝试设置接收操作"WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION"的广播接收器 但是这个意图似乎是在WiFi连接完成之前触发的(即:手机还没有IP地址,手机仍在连接过程中(,所以当你尝试连接到服务器时,你会得到一个错误。

有没有可靠的方法可以知道手机是否已连接到WiFi并准备连接到服务器。

我真的很抱歉没有添加代码,但我没有我的笔记本电脑,因为我在度假,但我无法摆脱这一点。

谢谢。

编辑:

我还尝试了所有其他可以使用的动作,如"wifi_state_change"和其他几个动作,但不幸的是没有改进。

你可以使用BrodcastReciever来完成

Permission in manifetst

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

安卓清单

<receiver android:name="com.AEDesign.communication.WifiReceiver" >
<intent-filter android:priority="100">
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>

广播接收器类

public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
//for wifi
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
if(info != null && info.isConnected()) {
// Do your work. 
// e.g. To check the Network Name or other info:
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
}
}
}

最新更新