在Android中,處理網(wǎng)絡(luò)變化的一種方法是使用BroadcastReceiver。以下是一個簡單的示例,展示了如何使用BroadcastReceiver監(jiān)聽網(wǎng)絡(luò)變化并在網(wǎng)絡(luò)連接狀態(tài)改變時接收廣播。
BroadcastReceiver
的類,并重寫onReceive
方法。在這個方法中,你可以根據(jù)網(wǎng)絡(luò)狀態(tài)執(zhí)行相應(yīng)的操作。import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 檢測網(wǎng)絡(luò)變化
if (isOnline(context)) {
Toast.makeText(context, "已連接到互聯(lián)網(wǎng)", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "已斷開互聯(lián)網(wǎng)連接", Toast.LENGTH_LONG).show();
}
}
// 檢查設(shè)備是否連接到互聯(lián)網(wǎng)
public boolean isOnline(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
}
AndroidManifest.xml
文件中,注冊NetworkChangeReceiver
類。你可以將其注冊為靜態(tài)廣播接收器,這樣它將在應(yīng)用程序啟動時自動注冊,并在應(yīng)用程序關(guān)閉時自動注銷。<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
...
>
...
<receiver android:name=".NetworkChangeReceiver">
<!-- 注冊靜態(tài)廣播接收器 -->
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
...
</application>
現(xiàn)在,每當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(例如,當(dāng)設(shè)備連接到或斷開互聯(lián)網(wǎng)時),NetworkChangeReceiver
類中的onReceive
方法將被調(diào)用,并顯示一個Toast消息指示當(dāng)前的網(wǎng)絡(luò)連接狀態(tài)。
請注意,從Android 7.0(API級別24)開始,訪問某些網(wǎng)絡(luò)狀態(tài)信息需要使用ConnectivityManager.getNetworkCapabilities()
方法,而不是ConnectivityManager.getActiveNetworkInfo()
方法。因此,如果你需要支持Android 7.0及更高版本,你可能需要更新你的代碼以使用新的API。