📜  Android 监听网络变化 - Java (1)

📅  最后修改于: 2023-12-03 14:59:16.657000             🧑  作者: Mango

Android 监听网络变化 - Java

在 Android 应用中,网络变化是一个重要的事件。如果你的应用依赖于网络,那么你需要监听网络变化并做出相应的处理。本文将介绍如何在 Android 应用中使用 Java 代码来监听网络变化。

监听网络变化

在 Android 应用中监听网络变化,可以使用 ConnectivityManager 类和 NetworkInfo 类。下面是一个示例代码,用于监听网络变化:

public class NetworkChangeListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            // 网络已连接
        } else {
            // 网络未连接
        }
    }
}

以上代码是一个广播接收器,用于监听网络变化。当网络状态发生变化时,该接收器会自动被激活,并执行 onReceive 方法。

onReceive 方法中,首先通过 ConnectivityManager 获取当前的网络连接状态,然后判断当前的网络是否已连接。如果网络已连接,则执行相应的操作;如果网络未连接,则执行相应的处理。

同时,我们还需要在 AndroidManifest.xml 中注册该广播接收器:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app">

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

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <!-- 网络变化监听器-->
        <receiver android:name=".NetworkChangeListener">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

在 AndroidManifest.xml 文件中,我们需要添加一个权限 ACCESS_NETWORK_STATE,用于获取网络连接状态。同时,我们还需要在 <application> 标签下注册上面定义的广播接收器。

小结

在本文中,我们介绍了如何在 Android 应用中监听网络变化。通过使用 ConnectivityManagerNetworkInfo 类,可以方便地获取当前的网络连接状态,并根据当前的状态,执行相应的操作。