平常我们玩qq的时候我们没联网 ,qq上面回显示“网络连接不给力,请检查网络连接”那么它是 通过什么方式判断网络是否连接的呢?
下面将写个案例展示如何检查网络连接状态的
由于我们这里只是测试下所以我们的项目只是简单的实现点击一个按钮判断设备网络是否连接如果 网络已连接则弹出一个消息框提示“网络通畅”反之则提示“您的网络真的连接 了吗”

1.新建一个android项目textNet(设备版本为4.4.2)
2.打开activity_main.xml 添加一个按钮
3.打开MainActivity.java 用匿名内部类为按钮添加一个点击事件
注:不建议使用匿名内部类 如果事件过多会很乱,做好到同一包下建一个类去实现方便修改

项目代码如下:

  1. package com.example.internet;
  2.  
  3. import android.app.Activity;
  4. import android.content.pm.PackageManager;
  5. import android.net.ConnectivityManager;
  6. import android.os.Bundle;
  7.  
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11.  
  12. import android.widget.Toast;
  13.  
  14. public class MainActivity extends Activity {
  15. private ConnectivityManager con;
  16. private boolean wifi;
  17. private boolean internet;
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_main);
  22.  
  23. //获得句柄
  24. Button btn1 = (Button) this.findViewById(R.id.button1);
  25.  
  26. //匿名内部类实现点击事件
  27. btn1.setOnClickListener(new OnClickListener(){
  28.  
  29. public void onClick(View v) { //建议不使用匿名内部类,
  30. //这里加try catch是为了防止设备没给权限二停止运行影响用户体验,
  31. try {
  32. //监视网络连接状态
  33. con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);
  34. //getNetworkinfo 获取指定网络连接类型的信息
  35. wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
  36. internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
  37.  
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. }
  41.  
  42. PackageManager pm = getPackageManager();
  43. //判断是否有权限
  44. boolean permission = (PackageManager.PERMISSION_GRANTED ==
  45. pm.checkPermission("android.permission.ACCESS_NETWORK_STATE", "com.example.internet"));
  46.  
  47. if (permission) {
  48.  
  49. if(wifi | internet){
  50. //土司 弹框显示
  51. Toast.makeText(MainActivity.this,
  52. "网络通畅", Toast.LENGTH_LONG)
  53. .show();
  54. }else{
  55. Toast.makeText(MainActivity.this,
  56. "亲,网络连了么?", Toast.LENGTH_LONG)
  57. .show();
  58. }
  59.  
  60. }else {
  61. //如果没权限则提示
  62. Toast.makeText(MainActivity.this,
  63. "请打开相关网络状态权限,方便使用", Toast.LENGTH_LONG)
  64. .show();
  65. }
  66. }
  67.  
  68. });
  69. }
  1.  
  1.  

注:权限清单方法

  

  1. try {
  2. PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);</span>
  3. String[] permissionStrings = pack.requestedPermissions;
  4. showToast("权限清单--->" + permissionStrings.toString());
  5. } catch (NameNotFoundException e) {
  6. e.printStackTrace();
  7. }

这里转载一份权限表:

  1. http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html

  

android——判断网络状态的更多相关文章

  1. Android判断网络状态

    package com.ch.services; import com.ch.utils.NetWorkUtils; import android.app.Service; import androi ...

  2. Android 监控网络状态

    public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (Conn ...

  3. Android获取网络状态

    Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http ...

  4. Android判断网络是否打开,并打开设置网络界面

    由于Android的SDK版本不同所以里面的API和设置方式也是有少量变化的,尤其是在Android 3.0 及后面的版本,UI和显示方式也发生了变化,现在就以打开网络设置为例,同大家分享一下: 1. ...

  5. Android杂谈--网络状态判断

    许多联网应用都在开始运行的时候检查当前网络状态,如果没有开启则去开启它,记录一下以前写程序时的网络检查,发现人的记忆力真是有限,总是隔段时间久忘记,所以记录下来是最好的记忆. 我们可以在一开始启动程序 ...

  6. Android学习总结——判断网络状态

    package com.example.xch.broadcasttest; import android.content.BroadcastReceiver; import android.cont ...

  7. Android开发(七)——判断网络状态

    项目中难免会出现使用网络的情况,使用网络前得进行网络判断,看网上的网友一般有多种实现版本. 第一种: // 是否有网络连接 public static boolean isNetworkConnect ...

  8. Android 中判断网络状态

    首先在AndroidManifest.xml添加权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_ ...

  9. android判断网络连接状态、联网类型、运营商

    /** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { St ...

随机推荐

  1. PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展?

    在虚拟机的CentOS5.5中,一键安装了PHP运行环境,但发现并没有 soap 扩展,而近期项目用需要用到 webservice. 上述的一键安装(lamp0.4),其实是源码编译安装,PHP配置文 ...

  2. JVM相关参数的采集

    1.以-jar方式启动jar包: java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=40100 ...

  3. 安卓APP关于切图标

    bin res drawable-hdpi drawable-ldpi drawable-mdpi drawable-nodpi drawable-xhdpi drawable-xxhdpi x越大代 ...

  4. column css3 列宽

    column-count 属性规定元素应该被分隔的列数: div { -moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Saf ...

  5. 在MVC中实现文件的上传

    @using (Html.BeginForm("daoru", "Excel", FormMethod.Post, new { enctype = " ...

  6. MySql 连接字符串

    一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接Driver={MySQL};Server=localhost;Option=16834; ...

  7. Mac下Boost环境搭建

    Boost,一个功能强大.跨平台.开源而且免费的C++程序库,可以在其官网了解更多:http://www.boost.org,C++标准经过不断的升级完善,现在已经功能越来越吸引人了,Boost开发过 ...

  8. ORACLE常用SQL(session&badSql)

    查看session:select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.loc ...

  9. Android ImageView的scaleType属性与adjustViewBounds属性(转)

    ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fi ...

  10. python 线程之 threading(三)

    python 线程之 threading(一)http://www.cnblogs.com/someoneHan/p/6204640.html python 线程之 threading(二)http: ...