您的位置:首页 > 理论基础 > 计算机网络

Android 网络连接——ConnectivityManager网络管理器

2015-09-12 18:51 483 查看
  现在有一种现象就是很多人玩手机是“走到哪,玩到哪”,那么我们为什么喜欢玩手机,如果没有网络,还会这样么?

  如果手机不能联网,那手机对我们的吸引力恐怕就会大大下降了,手机联网才有吸引力,作为开发者的我们怎么能不会网络连接呢,今天我们就来学习一下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("无网络连接");
        }
    }
}


让我们来看结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: