Android中判断网络连接是否可用

一、判断网络连接是否可用
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) { } else {       
//如果仅仅是用来判断网络连接      
//则可以使用 cm.getActiveNetworkInfo().isAvailable();
NetworkInfo[] info = cm.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}


下面的不仅可以判断,如果没有开启网络的话,就进入到网络开启那个界面,具体代码如下:
protected boolean CheckNetwork() {
// TODO Auto-generated method stub
boolean flag=false;
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(cwjManager.getActiveNetworkInfo()!=null)
flag=cwjManager.getActiveNetworkInfo().isAvailable();
if(!flag){
Builder b=new AlertDialog.Builder(this).setTitle("没有可用的网络").setMessage("请开启GPRS或WIFI网路连接");
b.setPositiveButton("确定",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent mIntent=new Intent("/");
ComponentName comp=new ComponentName("com.android.settings","com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivity(mIntent);
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub dialog.cancel();
}
}).create(); b.show();
}
return flag;
}

用的时候可以这样用:
if(!CheckNetwork()) return;

二、判断GPS是否打开
public static boolean isGpsEnabled(Context context) {
LocationManager lm = ((LocationManager) context .getSystemService(Context.LOCATION_SERVICE));
List<String> accessibleProviders = lm.getProviders(true); return accessibleProviders != null && accessibleProviders.size() > 0;
}

下边这小段代码是用来判断手机的GPS服务是否为开启状态.如果是就提示用户GPS已经打开.

如果现在GPS 处于关闭状态,那么给用户一个提示, 然后打开GPS设置界面,让用户更改GPS为启动状态.
private void openGPSSettings(){
LocationManager alm =(LocationManager)this.getSystemService( Context.LOCATION_SERVICE );
if( alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ) ){
Toast.makeText( this, “GPS is already on”, Toast.LENGTH_SHORT ).show();
}else{
Toast.makeText( this, “Please turn on GPS”, Toast.LENGTH_SHORT ).show();
Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );startActivity(myIntent);
}
}

初始化GPS设置
private void initGPS(){
LocationManager locationManager=(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
//判断GPS模块是否开启,如果没有则开启if(!locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)){
Toast.makeText(this, "GPS is not open,Please open it!", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent,0);
}else {
Toast.makeText(this, "GPS is ready", Toast.LENGTH_SHORT);
}
}

三、判断WIFI是否打开
public static boolean isWifiEnabled(Context context) {
ConnectivityManager mgrConn = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mgrTel = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE);
return ((mgrConn.getActiveNetworkInfo() != null && mgrConn .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
}


四、判断是否是3G网络
public static boolean is3rd(Context context) {
ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkINfo = cm.getActiveNetworkInfo();
if (networkINfo != null && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}

五、判断是wifi还是3g网络,用户的体现性在这里了,wifi就可以建议下载或者在线播放。
public static boolean isWifi(Context context) {
ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkINfo = cm.getActiveNetworkInfo();
if (networkINfo != null && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
} return false;
}


参考地址:

Android 监控网络状态

http://www.2cto.com/kf/201111/110226.html


更多相关文章

  1. Android状态栏提醒(Notification,NotificationManager)的使用
  2. 【Android】App界面与顶部状态栏重叠遮盖问题
  3. android 修改状态栏和标题栏颜色
  4. Android 之 AlertDialog 用户登录
  5. 判断Android设备是否连接网络
  6. Android 判断是否连接网络
  7. Android 隐藏系统状态栏和标题栏
  8. Android App 隐藏显示标题栏、状态栏、导航栏
  9. 2010.11.27———android 展示网络上的图片和播放视频

随机推荐

  1. Android: Failure [INSTALL_FAILED_DEXOPT
  2. Android 使用Glide实现圆形和圆角图片
  3. 在一串字符中查找到手机号码,并打印出来
  4. 对 Android 开发者有益的 40 条优化建议
  5. android 关机流程详细分析
  6. Android 动态添加view或item并获取数据
  7. 基于apache http的工具类
  8. Android应用开发系列(2)——HelloWorld,
  9. Jni:jbyteArray->char* 及char*->jbyteAr
  10. layout_weight的使用陷阱