【Android】Android 监听网络状态+源代码
时间: 2023-09-17 09:10:55 浏览: 137
Android(源码)Android中监听电话状态.rar
在 Android 中,可以通过监听系统的网络状态变化来实现网络连接状态的判断。具体实现方式如下:
1. 在 AndroidManifest.xml 文件中添加网络状态权限:
``` xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```
2. 在需要监听网络状态变化的地方,注册广播接收器:
``` java
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkChangeReceiver, intentFilter);
```
3. 实现广播接收器类:
``` java
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
// 网络已连接
} else {
// 网络断开
}
}
}
}
```
完整代码如下:
``` java
public class MainActivity extends AppCompatActivity {
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消注册广播接收器
unregisterReceiver(networkChangeReceiver);
}
/**
* 网络状态变化广播接收器
*/
public static class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
// 网络已连接
} else {
// 网络断开
}
}
}
}
}
```
在以上代码中,我们首先在 onCreate() 方法中注册了一个广播接收器,并指定了监听的广播事件为 ConnectivityManager.CONNECTIVITY_ACTION。然后在广播接收器的 onReceive() 方法中,我们通过 ConnectivityManager 获取当前网络状态,并判断网络是否可用。最后,在 onDestroy() 方法中取消注册广播接收器。
至此,我们就实现了 Android 监听网络状态的功能。
阅读全文