现在有一种现象就是很多人玩手机是“走到哪,玩到哪”,那么我们为什么喜欢玩手机,如果没有网络,还会这样么?
  如果手机不能联网,那手机对我们的吸引力恐怕就会大大下降了,手机联网才有吸引力,作为开发者的我们怎么能不会网络连接呢,今天我们就来学习一下Android的网络连接。
  学习网络连接之前我们先要学习如何获得手机联网的信息,如果我们连手机使用的哪种网络连接都不清楚,如何做开发。
   
  ConnectivityManager,连接管理器,看名字就很清楚了,ConnectivityManager是用来管理手机的网络连接的。通过这个类我们可以获得我们手机联网的相关信息和网络变化等…下面我们来看看ConnectivityManager是如何使用的。

ConnectivityManager基础

  学习一个知识最终要的就是思路啦,我们通过步骤理清思路,学习一下ConnectivityManager的使用。
1. 获得ConnectivityManager的对象。我们通过Context.getSystemService(Context.CONNECTIVITY_SERVICE)来获得。

ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

2. 通过ConnectivityManager对象调用getActiveNetworkInfo()方法来获得NetworkInfo对象,NetworkInfo对象包含的手机网络的信息。

NetworkInfo networkInfo = manager.getActiveNetworkInfo();

3. 通过NetworkInfo对象的相关方法获得我们想要得到的手机网络的信息。注意:我们在获得调用NetworkInfo 对象的方法是我们首先要判断,NetworkInfo对象非空且网络已连接。
  NetworkInfo的方法有很多,我们看几个常用的方法:

  • getType():获得网络连接的类型,返回值主要有:TYPE_MOBILE, TYPE_WIFI, TYPE_WIMAX, TYPE_ETHERNET, TYPE_BLUETOOTH,或者其他被ConnectivityManager网络管理器定义的网络连接类型。
  • getTypeName ():返回网络连接类型的名字。
  • isAvailable ():判断连接是否可用,如果网络可用,返回true;否则返回false。
  • isConnected ():判断网络连接是否存在。

ConnectivityManager实例讲解

  我们现在通过点击按钮Button来获得我们联网的信息,并将手机网罗连接的类型显示在界面上。
布局文件:

<LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity">    <TextView  android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="网络连接情况" />    <Button  android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获得网络连接的情况" /></LinearLayout>

Activity:

public class MainActivity extends Activity implements View.OnClickListener {    private Button mButtonNetInfo;//定义按钮    private TextView mTextViewInfo;//定义显示信息的文本    //定义网络连接的管理器    private ConnectivityManager mManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButtonNetInfo = (Button) findViewById(R.id.button);        mTextViewInfo = (TextView) findViewById(R.id.textview);        //获得网络管理器的对象        mManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        //点击事件        mButtonNetInfo.setOnClickListener(this);         }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button:                getNetInfo();//调用获得信息的方法                break;            default:                break;        }    }        private void getNetInfo() {        String type = "";        NetworkInfo networkInfo = mManager.getActiveNetworkInfo();//或的网络连接信息的对象        //判断NetworkInfo对象是否非空,以及网络是否连接        if (networkInfo != null && networkInfo.isConnected()) {        //如果网络连接,则弹出“网络连接”弹窗。            Toast.makeText(getApplicationContext(), "网络连接", Toast.LENGTH_SHORT).show();            //获得网络连接的类型            type = networkInfo.getTypeName();            mTextViewInfo.setText("网络连接形式为:" + type);        } else {        //如果无网络连接,则弹出“无网络连接”弹窗。            Toast.makeText(getApplicationContext(), "无网络连接", Toast.LENGTH_SHORT).show();            mTextViewInfo.setText("无网络连接");        }    }}

让我们来看结果:

更多相关文章

  1. android垃圾回收机制及程序优化System.gc
  2. Android最佳性能实践(二)——分析内存的使用情况
  3. 利用adb无线连接android手机进行调式 无需获得root权限
  4. socket和HTTP在Android中的连接请求问题
  5. 基于线程池和NIO技术构建高效的多协议Android通讯框架
  6. Android:android的框架区别(网络框架、图片异步加载与缓存框架、数
  7. [Android]如何做一个崩溃率少于千分之三噶应用app(14)-Fragment分
  8. Android关于回调函数的定义及用法
  9. Android内存泄露问题分析

随机推荐

  1. Android(安卓)单选组合框
  2. android 单例
  3. android 权限设置
  4. 收集整理的Android(安卓)color.xml文件的
  5. Android下调用收发短信邮件等
  6. android应用程序的安装位置
  7. Android(安卓)调用手机系统照相机拍照
  8. android 编写简单浏览器带下载
  9. [Android(安卓)UI] ActionBar 自定义属性
  10. 自定义进度条