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>
    复制代码
  • 相关阅读:
    parted命令
    parted命令
    Dell R410 上安裝 Debian6
    vmware虚拟机桥接方式ping不通问题解决
    SNMP的应用
    五种方法安装Windows 7 64位系统
    Win7 文件共享
    重装或克隆虚拟机后——eth0改变
    udev 高效、动态地管理 Linux 设备文件
    Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5OEL5
  • 原文地址:https://www.cnblogs.com/jidan/p/3432828.html
Copyright © 2011-2022 走看看