ConnectivityManager简介之网络连接状态
/**
*测试ConnectivityManager
*ConnectivityManager主要管理和网络连接相关的操作
*相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。
*想访问网络状态,首先得添加权限<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
*NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则代表着
*连接成功与否等状态。
*
*/
publicvoidtestConnectivityManager(){
ConnectivityManagerconnManager=(ConnectivityManager)this
.getSystemService(CONNECTIVITY_SERVICE);
//获取代表联网状态的NetWorkInfo对象
NetworkInfonetworkInfo=connManager.getActiveNetworkInfo();
//获取当前的网络连接是否可用
booleanavailable=networkInfo.isAvailable();
if(available){
Log.i("通知","当前的网络连接可用");
}
else{
Log.i("通知","当前的网络连接可用");
}
Statestate=connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if(State.CONNECTED==state){
Log.i("通知","GPRS网络已连接");
}
state=connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(State.CONNECTED==state){
Log.i("通知","WIFI网络已连接");
}
//跳转到无线网络设置界面
startActivity(newIntent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
//跳转到无限wifi网络设置界面
startActivity(newIntent(android.provider.Settings.ACTION_WIFI_SETTINGS));
}
(注意:上面的代码只是示例,直接运行的话有待修改。)
上面判断网络类型的方法只是为了展示用法,其实完全可以通过networkInfo.getType()的返回值来判断。
如:
[java]view plaincopy
Contextcontext=listActivity.getApplicationContext();//获取应用上下文
ConnectivityManagerconnectivityManager=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);//获取系统的连接服务
NetworkInfoactiveNetInfo=connectivityManager.getActiveNetworkInfo();//获取网络的连接情况
if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){
//判断WIFI网
}elseif(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE){
//判断3G网
}
android.util.Log常用的方法有以下5个:Log.v()Log.d()Log.i()Log.w()以及Log.e()。根据首字母对应VERBOSE,DEBUG,INFO,WARN,ERROR。
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视窗.如下图:
Step 2:新建一个Android工程,命名为LogDemo.
Step 3:设计UI界面,我们在这里就加了一个Button按钮(点击按钮出现Log日志信息).
Main.xml代码如下:
[xhtml]view plaincopy
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/bt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PresseMeLookLog"
/>
</LinearLayout>
Step 4:设计主类LogDemo.java,代码如下:
[java]view plaincopy
publicclassLogDemoextendsActivity{
privatestaticfinalStringACTIVITY_TAG="LogDemo";
privateButtonbt;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过findViewById找到Button资源
bt=(Button)findViewById(R.id.bt);
//增加事件响应
bt.setOnClickListener(newButton.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Log.v(LogDemo.ACTIVITY_TAG,"ThisisVerbose.");
Log.d(LogDemo.ACTIVITY_TAG,"ThisisDebug.");
Log.i(LogDemo.ACTIVITY_TAG,"ThisisInformation");
Log.w(LogDemo.ACTIVITY_TAG,"ThisisWarnning.");
Log.e(LogDemo.ACTIVITY_TAG,"ThisisError.");
}
});
}
}
Step 5:运行LogDemo工程,效果如下:
当我们点击按钮时,会触发事件,在Logcat视窗下有如下效果:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。