zoukankan      html  css  js  c++  java
  • android 使用广播监听网络状态

    参考:http://blog.csdn.net/androidbluetooth/article/details/7199708

    博客 http://blog.csdn.net/androidbluetooth/article/details/6860146 详细的粘贴了很多判断网络的方法。

    网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE .
    下面是实现的 demo :

    复制代码
    package mark.zhang;
    
    import android.app.Service;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.IBinder;
    import android.util.Log;
    
    public class ListenNetStateService extends Service {
        private ConnectivityManager connectivityManager;
        private NetworkInfo info;
    
        private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                    Log.d("mark", "网络状态已经改变");
                    connectivityManager = (ConnectivityManager)      
    
                                             getSystemService(Context.CONNECTIVITY_SERVICE);
                    info = connectivityManager.getActiveNetworkInfo();  
                    if(info != null && info.isAvailable()) {
                        String name = info.getTypeName();
                        Log.d("mark", "当前网络名称:" + name);
                    } else {
                        Log.d("mark", "没有可用网络");
                    }
                }
            }
        };
    
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            IntentFilter mFilter = new IntentFilter();
            mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            registerReceiver(mReceiver, mFilter);
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            unregisterReceiver(mReceiver);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            return super.onStartCommand(intent, flags, startId);
        }
    }
    复制代码
    在 manifest 文件中需要加上一条权限:
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    回头再看看关于 CONNECTIVITY_ACTION 的介绍,从 api 中,我们还可以得到一个信息:

    通过 intent 可以获取一些 EXTRA,如 EXTRA_NO_CONNECTIVITY。

    boolean b = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true);

    更多信息可以参考 ConnectivityManager.

    ===========================================

    在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析。
    复制代码
    public class ConnectionChangeReceiver extends BroadcastReceiver {   
            @Override   
            public void onReceive( Context context, Intent intent ) {   
                ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
                NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();   
                NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);   
                if ( activeNetInfo != null ) {   
                    Toast.makeText( context, "Active Network Type : " +
                          activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
                    }   
                if( mobNetInfo != null ) {   
                    Toast.makeText( context, "Mobile Network Type : " +
                          mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();   
                    }   
              }   
        }  
    复制代码
    
    
    复制代码
    < !-- Needed to check when the network connection changes -->   
    
      < uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>   
      < receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"   
                 android:label="NetworkConnection">   
          < intent-filter>   
              < action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>   
          < /intent-filter>   
      < /receiver>
  • 相关阅读:
    20172315 2017-2018-2 《程序设计与数据结构》第一周学习总结
    预备作业03
    寒假作业02
    寒假作业01
    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周
    20172310 2017-2018-2 《程序设计与数据结构》第八周学习总结
    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第一周
    20172310 《程序设计与数据结构》实验二报告
    20172310 2017-2018-2 《程序设计与数据结构》第七周学习总结
    20172310 2017-2018-2 《程序设计与数据结构》第六周学习总结
  • 原文地址:https://www.cnblogs.com/canphp/p/2760185.html
Copyright © 2011-2022 走看看