Android应用程序中用Broadcast来监测"断网",并进行相应处理
2013-07-30 11:07
239 查看
有的Android应用程序有“联网”和“断网”两种连接方式,“断网”和“联网”有两种不同的界面,”断网“情况下调用断网的API,“联网”情况下调用“联网”的API,如果“断网”情况下调用联网的API,就会出现异常。应该是“联网”情况下如果断网,应该就应该调到“断网”的界面,并调用“断网”情况下的API。
1.能够检测网络,首先具有如下权限(访问网络的权限和访问网络状态的权限):
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.在Manifest中配置BroadReceiver监测断网,action里面是网络连接变化时候来触发这个Receiver,如下所示:
<receiver
android:name=".ConnectionChangeReceiver"
android:label="NetworkConnection" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
3.BroadcastReceiver的实现代码如下:
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
//如果有网络连接中就直接退出
return;
}
}
}
}
//如果没有网络连接(网络已经断开)就采取相应的逻辑,跳到相应的界面。
SharedPreferences settings = context.getSharedPreferences(
Constant.PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(Constant.PREFS_NETWORK_ONLINE, false);
editor.commit();
intent.setClass(context, NetworkListActivity.class);
//在BroadcastReceiver(或者像Service那些没有界面的Android组件)中启动Activity,应该设置FLAG_ACTIVITY_NEW_TASK标记。
//清除所有的Activity,应该设置FLAG_ACTIVITY_CLEAR_TOP标记。
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
希望对大家有所帮助!
1.能够检测网络,首先具有如下权限(访问网络的权限和访问网络状态的权限):
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.在Manifest中配置BroadReceiver监测断网,action里面是网络连接变化时候来触发这个Receiver,如下所示:
<receiver
android:name=".ConnectionChangeReceiver"
android:label="NetworkConnection" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
3.BroadcastReceiver的实现代码如下:
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
//如果有网络连接中就直接退出
return;
}
}
}
}
//如果没有网络连接(网络已经断开)就采取相应的逻辑,跳到相应的界面。
SharedPreferences settings = context.getSharedPreferences(
Constant.PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(Constant.PREFS_NETWORK_ONLINE, false);
editor.commit();
intent.setClass(context, NetworkListActivity.class);
//在BroadcastReceiver(或者像Service那些没有界面的Android组件)中启动Activity,应该设置FLAG_ACTIVITY_NEW_TASK标记。
//清除所有的Activity,应该设置FLAG_ACTIVITY_CLEAR_TOP标记。
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
希望对大家有所帮助!
相关文章推荐
- Android应用程序中用Broadcast来监测"断网",并进行相应处理
- Sharepoint 站点下应用程序虚拟路径下出现"不能进行输出缓存处理",错误ID 5787 解决方法
- 在Android系统的"图库"中点击某张图片进行分享,在自己的应用程序中如何获取那张图片的路径?
- Android图像处理简介の使用内置Camera应用程序进行图像捕获
- Android图像处理简介の使用内置Camera应用程序进行图像捕获
- 【BroadcastReceiver】增加 addDataScheme("file") 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略
- Android Studio "diamond operator is not supported" 处理方法
- 如何处理android 报错 "Unparsed aapt error(s)"
- 针对网上流传的"Android 再按一次后退键退出应用程序"方法改正
- android应用程序消息处理机制分析之消息处理
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- Android应用程序消息处理机制(Looper、Handler)分析
- Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。 那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少
- Android应用程序如何进行系统签名
- Android Handler机制 (一个Thead中可以建立多个Hander,通过msg.target保证MessageQueue中的每个msg交由发送message的handler进行处理 ,但是 每个线程中最多只有一个Looper,肯定也就一个MessageQuque)
- Android使用Matrix对Bitmap进行处理
- Android应用程序打包时,出现错误:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....
- 解开Android应用程序组件Activity的"singleTask"之谜
- Android应用程序消息处理机制
- 在Android中,对图像进行颜色方面的处理图像处理