1. /** 

  2.   * 测试ConnectivityManager 

  3.   * ConnectivityManager主要管理和网络连接相关的操作 

  4.   * 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。 

  5.   * 想访问网络状态,首先得添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  

  6.   * NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则代表着 

  7.   * 连接成功与否等状态。 

  8.   *  

  9.   */  


  1. public void testConnectivityManager() {  

  2.   ConnectivityManager connManager = (ConnectivityManager) this  

  3.     .getSystemService(CONNECTIVITY_SERVICE);  

  4.   // 获取代表联网状态的NetWorkInfo对象  

  5.   NetworkInfo networkInfo = connManager.getActiveNetworkInfo();  

  6.   // 获取当前的网络连接是否可用  

  7.   boolean available = networkInfo.isAvailable();  

  8.   if(available){  

  9.    Log.i("通知""当前的网络连接可用");  

  10.   }  

  11.   else{  

  12.    Log.i("通知""当前的网络连接可用");  

  13.   }  

  14.   

  15.   State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  

  16.   if(State.CONNECTED==state){  

  17.    Log.i("通知""GPRS网络已连接");  

  18.   }  

  19.     

  20.   state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();  

  21.   if(State.CONNECTED==state){  

  22.    Log.i("通知""WIFI网络已连接");  

  23.   }  

  24.     

  25.   // 跳转到无线网络设置界面  

  26.   startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));  

  27.   // 跳转到无限wifi网络设置界面  

  28.   startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));  

  29.     

  30.  }  


(注意:上面的代码只是示例,直接运行的话有待修改。)

上面判断网络类型的方法只是为了展示用法,其实完全可以通过networkInfo.getType()的返回值来判断。

 如:

[java] view plaincopy

  1. Context context = listActivity.getApplicationContext();//获取应用上下文  

  2. ConnectivityManager connectivityManager = (ConnectivityManager) context  

  3. .getSystemService(Context.CONNECTIVITY_SERVICE);//获取系统的连接服务  

  4. NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();//获取网络的连接情况  

  5. if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){  

  6. //判断WIFI网  

  7. }else if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) {  

  8. //判断3G网  

  9. }  



android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSEDEBUG,INFOWARNERROR

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。

注意:不同的打印方法在使用时都是某个方法带上(String tag, String msg)参数,tag表示的是打印信息的标签,msg表示的是需要打印的信息。

下面是我做的一个简单的LogDemo(Step By Step):

Step 1:准备工作(打开LogCat视窗).

 启动Eclipse,在Window->Show View会出来一个对话框,当我们点击Ok按钮时,会在控制台窗口出现LogCat视窗.如下图:

ConnectivityManager简介之网络连接状态_public

ConnectivityManager简介之网络连接状态_网络连接_02

Step 2:新建一个Android工程,命名为LogDemo.

Step 3:设计UI界面,我们在这里就加了一个Button按钮(点击按钮出现Log日志信息).

Main.xml代码如下:

 

[xhtml] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:orientation="vertical"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     >  

  7. <TextView    

  8.     android:layout_width="fill_parent"   

  9.     android:layout_height="wrap_content"   

  10.     android:text="@string/hello"  

  11.     />  

  12. <Button  

  13.  android:id="@+id/bt"  

  14.  android:layout_width="wrap_content"  

  15.  android:layout_height="wrap_content"  

  16.  android:text="Presse Me Look Log"  

  17. />  

  18. </LinearLayout>  


Step 4:设计主类LogDemo.java,代码如下:

[java] view plaincopy

  1. public class LogDemo extends Activity {  

  2.     

  3.  private static final String ACTIVITY_TAG="LogDemo";  

  4.  private Button bt;  

  5.     public void onCreate(Bundle savedInstanceState) {  

  6.         super.onCreate(savedInstanceState);  

  7.         setContentView(R.layout.main);  

  8.         //通过findViewById找到Button资源  

  9.         bt = (Button)findViewById(R.id.bt);  

  10.         //增加事件响应  

  11.         bt.setOnClickListener(new Button.OnClickListener(){  

  12.     @Override  

  13.    public void onClick(View v) {  

  14.     Log.v(LogDemo.ACTIVITY_TAG, "This is Verbose.");  

  15.     Log.d(LogDemo.ACTIVITY_TAG, "This is Debug.");  

  16.     Log.i(LogDemo.ACTIVITY_TAG, "This is Information");  

  17.     Log.w(LogDemo.ACTIVITY_TAG, "This is Warnning.");  

  18.     Log.e(LogDemo.ACTIVITY_TAG, "This is Error.");  

  19.    }  

  20.            

  21.         });  

  22.     }  

  23.           

  24. }  


Step 5:运行LogDemo工程,效果如下:

ConnectivityManager简介之网络连接状态_wifi_03

当我们点击按钮时,会触发事件,在Logcat视窗下有如下效果:

ConnectivityManager简介之网络连接状态_wifi_04