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

标签 java android

我在我的应用程序中使用广播接收器类,并且我在广播接收器类中对 WiFi 状态进行操作。如果 WiFi 断开或连接,则执行一些操作。当 wifi 连接时显示正确的消息,但当 wifi 断开时它不显示 wifi 断开消息而是显示 else 语句。

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

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");
            }
        }

在 list 中注册

<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");
        }
    }
    }

   }

关于java - 获取 WiFi 状态并使用广播接收器对其进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46422939/

相关文章:

java - 无法在 spring 3.0 mvc 中获取列表值

java - 在 Scala 中将字符串转换为整数的最简洁方法?

android - 检查imageView是否有drawable

android - Auth 类在哪里——Google Play Services 8.3.0

java - 更改微调器第一行中的文本颜色

java - 如何在录音时为语音留言设置定时器(与 WhatsApp 语音留言录音功能相同)?

java - 是否可以在代码中设置单个 View 组的内容 View ?

java - String.codePointAt 到底是做什么的?

java - 检查 WebElement 对象中是否存在元素

android - setcontentview() 不适用于 Activity