码迷,mamicode.com
首页 > 移动开发 > 详细

广播小案例-监听系统网络状态 --Android开发

时间:2018-06-23 14:25:43      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:ems   iss   public   over   关闭   available   new   roman   dac   

本例通过广播实现简单的监听系统网络状态改变的小案例。

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网络信息。

广播小案例-监听系统网络状态 --Android开发

标签:ems   iss   public   over   关闭   available   new   roman   dac   

原文地址:https://www.cnblogs.com/qikeyishu/p/9216990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!