本例通过广播实现简单的监听系统网络状态改变的小案例。
1、案例效果演示
当手机连网后,系统提示“已连接网络”,
当手机断网后,系统提示“当前网络不可用1”。
2、案例实现
在主活动中动态注册广播,然后写一个内部类来接收系统广播,下面是相关文件的核心代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private NetworkChangeReceiver networkChangeReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //动态注册广播 intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChangeReceiver(); registerReceiver(networkChangeReceiver, intentFilter); } /** * 活动被关闭后执行 */ @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver); } class NetworkChangeReceiver extends BroadcastReceiver {//定义一个内部类用来接收广播 @Override public void onReceive(Context context, Intent intent) {// Toast.makeText(context, "网络状态发生改变!",// Toast.LENGTH_SHORT).show(); ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { Toast.makeText(context, "已连接网络!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "当前网络不可用!", Toast.LENGTH_SHORT).show(); } } }}
另外一定要配置网络相关的权限,在这里需要在AndroidManifest.xml中添加下面的代码:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 意思是允许程序访问有关GSM网络信息。
原文地址:https://www.cnblogs.com/qikeyishu/p/9216990.html
时间: 2024-11-05 13:29:51