4.2.2.6 android中检测网络连接状态简单总结
2016-02-28 10:30
656 查看
android中检测网络连接状态简单总结
2013-10-13 23:25 398人阅读 评论(0) 收藏 举报分类:
实习android开发之路(298)
作者同类文章X
•ViewDragHelper详解
•详解Android中的屏幕方向
•android:View的setTag和getTag使用
•为GridView添加HeaderView
•用android:clipChildren来实现红心变大特效
更多
android中检测网络连接状态简单总结
分类: Android2013-10-1313:12 143人阅读 评论(0) 收藏 举报
android检测网络连接wifi3GGPS
相应几乎没有不跟网络打交道的android应用,那么在实际中就需求检测手机是否有网络连接,甚至需要判断是何种方式连接,这样能给用户带来更好的体验和一些使用指导,下面给出一些常用的判断,如果要知道是否有网络、以及是采用wifi连接的还是3G连接的,调用下面对应方法模型就OK了,代码如下:
TestNetworkActivity:
[java] view
plaincopy
package com.home.testnetwork;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class TestNetworkActivity extends Activity implements OnClickListener {
private Button checkBtn;
private EditText netText;
private EditText wifiText;
private EditText net3gText;
private EditText gpsText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
checkBtn = (Button) findViewById(R.id.main_btn_check);
checkBtn.setOnClickListener(this);
wifiText = (EditText) findViewById(R.id.main_et_wifi);
net3gText = (EditText) findViewById(R.id.main_et_3g);
gpsText = (EditText) findViewById(R.id.main_et_GPS);
netText = (EditText) findViewById(R.id.main_et_net);
}
/**
* 检测网络是否连接
*
* @return
*/
private boolean isNetConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo[] infos = cm.getAllNetworkInfo();
if (infos != null) {
for (NetworkInfo ni : infos) {
if (ni.isConnected()) {
return true;
}
}
}
}
return false;
}
/**
* 检测wifi是否连接
*
* @return
*/
private boolean isWifiConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
}
return false;
}
/**
* 检测3G是否连接
*
* @return
*/
private boolean is3gConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
}
return false;
}
/**
* 检测GPS是否打开
*
* @return
*/
private boolean isGpsEnabled() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> accessibleProviders = lm.getProviders(true);
for (String name : accessibleProviders) {
if ("gps".equals(name)) {
return true;
}
}
return false;
}
@Override
public void onClick(View v) {
if (v == checkBtn) {
netText.setText(isNetConnected() + "");
wifiText.setText(isWifiConnected() + "");
net3gText.setText(is3gConnected() + "");
gpsText.setText(isGpsEnabled() + "");
}
}
}
布局xml:
[html] view
plaincopy
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/main_btn_check"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="检测网络" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网络是否连接:" />
<EditText
android:id="@+id/main_et_net"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wifi是否连接:" />
<EditText
android:id="@+id/main_et_wifi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3G是否连接:" />
<EditText
android:id="@+id/main_et_3g"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS是否打开:" />
<EditText
android:id="@+id/main_et_GPS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
</LinearLayout>
记得加上相应权限~
附上图片结果:
相关文章推荐
- 4.2.2.5 android 判断3G、wifi、2G等网络状态连接
- 4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
- 内核线程、内核级线程(轻量级进程)和用户级线程 http://www.cnblogs.com/children/archive/2012/04/16/2452740.html
- 进程,轻量级进程,内核线程,用户线程的区别关系http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27025492&id=3441601
- ios网络数据下载和JSON解析
- 浏览器缓存相关http头
- java lang 包学习 http://blog.csdn.net/wong_judy/article/details/5318560
- Linux内核实践 - 如何添加网络协议[三]:实现
- Linux内核实践 - 如何添加网络协议[二]:实现
- Linux内核实践 - 如何添加网络协议[一]:目的
- 虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 http://rednaxelafx.iteye.com/blog/492667
- 2016年国内SEM行业现状调研报告
- TCP/IP学习-链路层
- C++开源TCP/IP网络开发框架:ACE从入门到精通V9.5
- volley的用法(数据库网络请求框架 )
- Https socket 代理
- nmap 命令操作
- WIN7 64bit IIS7.5:HTTP错误404.17-Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序
- java中进行socket编程实现tcp、udp协议总结
- HTTPS服务器配置