获取WiFi状态并使用广播接收器对其进行操作



我在应用程序中使用了广泛的铸造接收器类,并且在宽阔的铸件接收器类中在WiFi状态上进行操作。如果WiFi断开或连接,请进行一些操作。当WiFi连接其显示正确的消息时,但是当WiFi断开其不显示WiFi断开消息时,请显示其他语句。

这是我用于广播接收器类的代码。

public class WifiReceiver extends BroadcastReceiver {
private static final String TAG = "NetworkStateReceiver";
@Override
public void onReceive(final Context context, final Intent intent) {
    Log.d(TAG, "Network connectivity change");

        if (intent.getExtras() != null) {
            final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            final NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
            //check if wifi is connected
            if (ni != null && ni.isConnectedOrConnecting()) {
                Log.i(TAG, "Network " + ni.getTypeName() + " connected");
        }
        else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
        Log.i(TAG, "wifi disconnected");
            }
            else {
        Log.i(TAG, "Network  else state");
            }
        }

在清单中注册

<receiver android:name=".WifiReceiver">
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

一个工作示例

@Override
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
{
    WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
    NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
    NetworkInfo.State state = networkInfo.getState();
    if(state == NetworkInfo.State.CONNECTED)
    {
        Log.d("Tag","Connected");
    }
    if(state == NetworkInfo.State.DISCONNECTED)
    {
        if(manager.isWifiEnabled())
        {
             Log.d("Tag","Disconnected");
        }
    }
    }
   }

创建wifi

的对象
wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

然后

 if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
    {
 if (wifi.isWifiEnabled()) {
        //perform action
    }
    else {
        //perform action
    }

最新更新