android 网络连接广播
时间: 2023-09-11 11:04:11 浏览: 51
在 Android 中,可以使用 BroadcastReceiver 监听网络连接状态的变化。具体步骤如下:
1. 在 AndroidManifest.xml 文件中添加权限:
```xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```
2. 创建一个 BroadcastReceiver 子类,用于监听网络连接状态的变化。可以参考如下代码:
```java
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 获取当前网络状态
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
// 发送广播通知应用程序当前网络状态
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.example.NETWORK_STATUS_CHANGED");
broadcastIntent.putExtra("isConnected", isConnected);
context.sendBroadcast(broadcastIntent);
}
}
```
3. 注册 BroadcastReceiver,在 onCreate() 方法中添加如下代码:
```java
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
NetworkChangeReceiver receiver = new NetworkChangeReceiver();
registerReceiver(receiver, filter);
```
4. 在 onDestroy() 方法中取消注册 BroadcastReceiver:
```java
unregisterReceiver(receiver);
```
5. 在应用程序中,可以通过注册 BroadcastReceiver 来接收网络状态变化的通知。可以参考如下代码:
```java
public class MainActivity extends AppCompatActivity {
private BroadcastReceiver networkStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnected = intent.getBooleanExtra("isConnected", false);
if (isConnected) {
// 网络已连接
} else {
// 网络已断开
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter("com.example.NETWORK_STATUS_CHANGED");
registerReceiver(networkStatusReceiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkStatusReceiver);
}
}
```