1、 注册一个广播接收器,在打开或关闭网络时时用Toast提示“网络状态发生变化”,IntentFilter为:android.net.conn.CONNECTIVITY_CHANGE接收后,用log.d输出。 (建议使用动态注册广播接受者)
时间: 2024-03-01 21:52:30 浏览: 16
好的,以下是实现要求的代码:
首先,在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
```
然后,在需要监听网络变化的 Activity 或 Service 中,动态注册广播接收器:
```java
public class MainActivity extends AppCompatActivity {
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 动态注册广播接收器
networkChangeReceiver = new NetworkChangeReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkChangeReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消注册广播接收器
unregisterReceiver(networkChangeReceiver);
}
}
```
接着,创建一个 BroadcastReceiver 类,用于接收网络变化的广播:
```java
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 输出日志
Log.d("NetworkChangeReceiver", "网络状态发生变化");
// 显示 Toast
Toast.makeText(context, "网络状态发生变化", Toast.LENGTH_SHORT).show();
}
}
```
注意,这里使用了 Log.d() 方法输出日志,可以在开发者选项中查看。如果不需要输出日志,可以将这行代码注释掉。并且,在不需要监听网络变化时,应该及时取消注册广播接收器。