Android利用广播监听设备网络连接(断网)的变化情况

MainActivity如下:

package cc.testnetworkchange;
import android.os.Bundle;
import android.app.Activity;
/**
 * Demo描述:
 * 利用广播监听设备网络连接的变化情况
 * 亦可借此监测到设备是否已经断开网络
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
}

NetWorkChangeBroadcastReceiver如下:

package cc.testnetworkchange;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;

public class NetWorkChangeBroadcastReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		ConnectivityManager connectivityManager=
		(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		if (connectivityManager!=null) {
			NetworkInfo [] networkInfos=connectivityManager.getAllNetworkInfo();
			for (int i = 0; i < networkInfos.length; i++) {
				State state=networkInfos[i].getState();
				if (NetworkInfo.State.CONNECTED==state) {
					System.out.println("------------> Network is ok");
					return;
				}
			}
		}

		//没有执行return,则说明当前无网络连接
		System.out.println("------------> Network is validate");
		intent.setClass(context, NetWorkErrorActivity.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
	}

}

NetWorkErrorActivity如下:

package cc.testnetworkchange;
import android.os.Bundle;
import android.app.Activity;
public class NetWorkErrorActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.networkerror);
	}
}

main.xml如下:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="利用广播监听设备网络连接的变化情况"
     />

</RelativeLayout>

AndroidManifest.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cc.testnetworkchange"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="cc.testnetworkchange.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

         <!-- 注册显示错误的Activity-->
        <activity android:name="cc.testnetworkchange.NetWorkErrorActivity"></activity>

        <!-- 注册广播 -->
        <receiver android:name="cc.testnetworkchange.NetWorkChangeBroadcastReceiver">
            <intent-filter>
                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
             </intent-filter>
        </receiver>
    </application>

</manifest>

Android利用广播监听设备网络连接(断网)的变化情况,布布扣,bubuko.com

时间: 2024-10-10 08:03:29

Android利用广播监听设备网络连接(断网)的变化情况的相关文章

无线网络间歇断网该怎么办?

无论是网络技术的使用还是网咯故障的排查,作为网络管理员我们都应该有一定的了解,那么这里就详细的为我们说明一下.对于无线网络技术,我们有多少人很了解呢?对于无线网络出现的故障,我们这里为大家汇总了一些常见的排除技巧.排查连接方式,解决间歇断网的无线网络故障 在本地局域网通过无线路由器接入到Internet网络中的情形下,要是局域网中的工作站经常出现一会儿能正常上网.一会儿又不能正常上网的故障现象时,我们首先需要确保工作站与无线路由器之间的上网参数一定要正确,在该基础下就应该重点检查无线路由器的连接

Android利用Fiddler进行网络数据抓包【怎么跟踪微信请求】

主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 Fiddler. 相对于tcpdump配合wireshark抓包的优势在于:(1)无需root (2)对Android和Iphone同样适用 (3)操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4)数据包的查看更清晰易懂,Fiddler的UI更简单明了 (5) 可以查看https请求

Android 通过广播获取网络状态

Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验. 本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请对比WIFI连接作出调整. 首先写一个WifiStateBroadcast类继承BroadcastReceiver,重写onRecevie方法,获取网络连接状态管理器,通过管理器拿到对应的网络信息,得到网络状态,判断网络状态,作出相应的业务逻辑. 1 public class WifiStateBroadCast e

Android利用广播实现ViewPager中item之间的数据通信

当你在实现Fragment之间的通信时(例如Fragment_A和Fragment_B),可能会想到的方法是在Fragment_B中对外提供一个接口,然后在Fragment_A中去调用这个接口,并把这需要的参数传递过去. 下面我将对利用广播来实现从Fragment_A向Fragment_B传递数据. 主界面: public class MainActivity extends FragmentActivity { private int getLayoutResID() { return R.l

android 利用广播实现程序的强制退出

利用广播机制,实现程序的强制退出. 前面有篇博文,写到了一键退出,这里利用到了那里的ActivityCollector的集合和BaseActivity 功能:打开程序后,先登录,登录成功后,进入主页面,主页面有个按钮,点击后弹出窗口,用户点击 "是"之后退出程序 1.ActivityCollector package com.yuanlp.forceexit; /**  * Created by 原立鹏 on 2017/6/28.  */ import android.app.Acti

Android利用广播监听按下HOME和电源键

package cc.testhome; import cc.testhome.HomeKeyObserver.OnHomeKeyListener; import cc.testhome.PowerKeyObserver.OnPowerKeyListener; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播监听Home键的按下和长按Home键 * 利用广播监听电源键的按下(关闭屏幕) * *

Android利用Fiddler进行网络数据抓包

原文地址:http://blog.csdn.net/forlong401/article/details/23538951 http://www.trinea.cn/android/android-network-sniffer/ 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. 相对于tcpdump配合wireshark抓包的优势在于:(1)无需root (2)对Android和Iphone同样适用

Android 利用Fiddler进行网络数据抓包

主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. 相对于tcpdump配合wireshark抓包的优势在于:(1)无需root (2)对Android和Iphone同样适用 (3)操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4)数据包的查看更清晰易懂,Fiddler的UI更简单明了 (5) 可以查看https请求.如果你坚持使用tcpdump也可见:利用tcpdump和wireshark

android 获取并判断网络连接状态

/*添加权限*/<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>/*在需要判断网络的地方添加和调用以下方法*/ public boolean isNetworkAvilable(Context context){ ConnectivityManager connectivityManager = (ConnectivityManag