Android(安卓)网络连接——ConnectivityManager网络管理器
现在有一种现象就是很多人玩手机是“走到哪,玩到哪”,那么我们为什么喜欢玩手机,如果没有网络,还会这样么?
如果手机不能联网,那手机对我们的吸引力恐怕就会大大下降了,手机联网才有吸引力,作为开发者的我们怎么能不会网络连接呢,今天我们就来学习一下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("无网络连接"); } }}
让我们来看结果:
更多相关文章
- android垃圾回收机制及程序优化System.gc
- Android最佳性能实践(二)——分析内存的使用情况
- 利用adb无线连接android手机进行调式 无需获得root权限
- socket和HTTP在Android中的连接请求问题
- 基于线程池和NIO技术构建高效的多协议Android通讯框架
- Android:android的框架区别(网络框架、图片异步加载与缓存框架、数
- [Android]如何做一个崩溃率少于千分之三噶应用app(14)-Fragment分
- Android关于回调函数的定义及用法
- Android内存泄露问题分析