我一直在寻找一种方法来知道我的Android智能手机何时连接到WiFi网络,何时可以连接到特定服务器以交换数据。 我已经尝试设置广播接收器来接收动作“ WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION” 但是,此意图似乎在WiFi连接完成之前就已触发(即:电话还没有IP地址,并且电话仍处于连接过程的中间),因此,当您尝试连接到服务器时,出现错误。
是否有可靠的方法来知道电话是否已连接到WiFi并准备连接到服务器。
对于我没有添加代码感到非常抱歉,但是由于我正在休假,所以我没有随身携带笔记本电脑,但是我无法忘记这一点。
谢谢。
编辑:
我也尝试了所有其他可以使用的动作,例如“ wifi_state_change”和其他几个动作,但不幸的是没有改善。
答案 0 :(得分:0)
您可以使用BrodcastReciever
显示权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
AndroidManifest
<receiver android:name="com.AEDesign.communication.WifiReceiver" >
<intent-filter android:priority="100">
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
BroadcastReceiver类
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();
}
}
}