Android网络切换状态广播

原创 2016年05月30日 18:56:18

直接上代码:


    *package com.juyoulicai.forexproduct.Service;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.widget.Toast;

    import com.juyoulicai.eventbus.ForexDateEvent;
    import com.juyoulicai.util.MLog;

    import org.greenrobot.eventbus.EventBus;

    /**
     * 作者: allen on 16/5/30.
     */
    public class ConnectionChangeReceiver extends BroadcastReceiver {
        private static  final String TAG =ConnectionChangeReceiver.class.getSimpleName();
        @Override
        public void onReceive(Context context, Intent intent) {
            MLog.d(TAG,"网络状态改变");
            boolean success =false;
            /**
             * 获得网络连接服务
             */
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo.State state =connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
            if (NetworkInfo.State.CONNECTED==state){
                success =true;
            }
            state =connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
            if (NetworkInfo.State.CONNECTED==state){
                success =true;
            }
            if (!success){
                Toast.makeText(context,"网络连接失败",Toast.LENGTH_LONG).show();
                EventBus.getDefault().post(new ForexDateEvent(ForexDateEvent.NetworkInfoState,false));
            } else {
                EventBus.getDefault().post(new ForexDateEvent(ForexDateEvent.NetworkInfoState,true));
            }
        }
    }

记得在Manifest文件里面进行权限声明,和广播接收器注册。

< !– Needed to check when the network connection changes –>

< uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>   
< receiver android:name="you_package_name.ConnectionChangeReceiver"   android:label="NetworkConnection">   
< intent-filter>   
      < action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>   
< /intent-filter>   
< /receiver> 

* 使用方式一:*

  1. 在Activity的onCreate中:
    //注册网络监听

    IntentFilter filter = new IntentFilter();  
    filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
    registerReceiver(mNetworkStateReceiver, filter); 
    
  2. 在Activity中的onDestroy中:
    //取消监听

    unregisterReceiver(mNetworkStateReceiver); 
    

使用方式二:
1. 应用启动时,启动Service,在Service的onCreate方法中注册网络监听:
//注册网络监听

IntentFilter filter = new IntentFilter();  
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
registerReceiver(mNetworkStateReceiver, filter); 

2. 应用退出时,Service关闭,在Service的onDestroy方法中取消监听:
//取消监听

    unregisterReceiver(mNetworkStateReceiver); 
版权声明:本文为博主原创文章,未经博主允许不得转载。(转载请注明出自 AllenCoder)

相关文章推荐

Android之监测手机网络状态的广播

今天具体说下Android检测网络状态的广播,我们在做一些手机应用的时候如果网络发生改变可能会给用户造成一些损失,在中国2G,3G网络都没有普及的情况下,基本都是包流量的,所以在做一些视频应用软件的时...

Android网络切换分析

在Android系统中,不同类型的网络同时开启时,系统总会自动选择一种网络。这是怎么实现的呢?我们不难想到,如果各种网络已经事先定义好了优先级,那么系统就能根据网络类型的优先级自动进行选择。下面将详细...
  • myxmu
  • myxmu
  • 2014-03-19 10:44
  • 1056

Android网络优先级及更改

from:http://blog.csdn.net/u013686019/article/details/51447129 Android版本: [java] view plain...

Android开发中WIFI和GPRS网络的切换

在项目的开发中因为要使用到WIFI和GPRS网络的切换,因此就研究了一下通过代码打开WIFI和GPRS的工作。 无论是切换WIFI还是切换GPRS网络都需要设置相应的权限,所以需要在Android...

android网络类型之2G-3G切换

在android手机‘设置’-‘移动网络类型’里可以看到有关网络类型的选项,一般默认为3G优先。  如果有需要在程序中切换网络类型的朋友,不妨试试下面的方法。这里提供了几种思路,虽然可能对待  ...

android 网络实时监听网络状态变化 及 网络类型判断

android 中 我们经常需要判断 各种网络类型 然后需要给用户做出相应的提示,一般网络类型有 2g ,3g,4g ,wifi,无网络等等。 1. 网络类型判断 TelephonyManag...

Android多网络环境(wifi,mobile)下强制在某个网络(mobile)访问服务端以及适配

在wifi和移动数据网络同时开启之下,现在需要wifi开着的情况下,强制通过移动数据网络发送网络请求,以及在机型和低版本适配。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)