Android ConnectivityManager详解

来源:互联网 发布:windows agent 安装 编辑:程序博客网 时间:2024/06/07 23:49

ConnectivityManager类,回答了关于网络连接的状态查询。它还通知应用程序,当网络连接的变化。可以通过如下调用得到这个类的一个实例Context.getSystemService(Context.CONNECTIVITY_SERVICE)

这个类的主要职责是:

  1. 监控网络连接(无线网络连接,GPRS,UMTS等)
  2. 发送广播意图时的网络连接的变化
  3. 尝试“故障转移”到另一个网络时,连接到网络丢失
  4. 提供了一个API,允许应用程序查询可用网络的粗粒或细粒状态
  5. 提供了一个API,允许为他们的数据流量的应用程序的要求,选择网络
下面举例一个判断当前是否有网络的代码(示例来自《第一行代码·第二版》)

方法

 getNetworkInfo(Network network)

返回有关特定网络连接状态的信息。

注:getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。详见:getSystemService详见

MainActivity文件(略过外部包)
public class MainActivity extends AppCompatActivity {    private IntentFilter intentFilter;    private NetworkChangeReceiver networkChangeReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        intentFilter=new IntentFilter();        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");        networkChangeReceiver = new NetworkChangeReceiver();        registerReceiver(networkChangeReceiver,intentFilter);    }    @Override    protected void onDestroy(){        super.onDestroy();        unregisterReceiver(networkChangeReceiver);    }    class NetworkChangeReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent){            ConnectivityManager connectivityManager=(ConnectivityManager)                    getSystemService(Context.CONNECTIVITY_SERVICE);            NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();            if(networkInfo!=null&&networkInfo.isAvailable()){                Toast.makeText(context,"network is available",Toast.LENGTH_SHORT).show();            }            else{                Toast.makeText(context,"network is unavailable",Toast.LENGTH_SHORT).show();            }        }    }}
另外,这里访问系统的网络状态是需要声明权限的,打开AndroidManifest.xml文件,加入如下代码:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>



0 0
原创粉丝点击