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

时间:2018-08-24 20:41:40

标签: android wifi android-broadcast android-broadcastreceiver

我一直在寻找一种方法来知道我的Android智能手机何时连接到WiFi网络,何时可以连接到特定服务器以交换数据。 我已经尝试设置广播接收器来接收动作“ WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION” 但是,此意图似乎在WiFi连接完成之前就已触发(即:电话还没有IP地址,并且电话仍处于连接过程的中间),因此,当您尝试连接到服务器时,出现错误。

是否有可靠的方法来知道电话是否已连接到WiFi并准备连接到服务器。

对于我没有添加代码感到非常抱歉,但是由于我正在休假,所以我没有随身携带笔记本电脑,但是我无法忘记这一点。

谢谢。

编辑:

我也尝试了所有其他可以使用的动作,例如“ wifi_state_change”和其他几个动作,但不幸的是没有改善。

1 个答案:

答案 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();
          }
       }
    }