文档章节

检测网络工具类

逆生长
 逆生长
发布于 2015/06/08 11:38
字数 338
阅读 18
收藏 0
 public class NetWork {
     private final ConcurrentLinkedQueue <NetworkListener >mListeners =
                   ConcurrentLinkedQueue();
     private final Context mContext ;
     private int mNetChange ;
     private final NetworkReceiver mNetworkReceiver = newNetworkReceiver() ;
     private static final int DIS_CONNECT = - 1 ;
     private static final int UNKNOWN_NET_TYPE = - 2;
     public NetWork ( Context context ) {
         this. mContext = context ;
         this. mContext .enforceCallingOrSelfPermission (
                 "android.permission.ACCESS_NETWORK_STATE" ,
                 "Need permission: android.permission.ACCESS_NETWORK_STATE") ;
         this. mNetChange = getNetChange ();
     }
     private int getNetChange() {
         if ( ! isNetworkConnected()) {
             return - 1 ;
         }
         if ( isWifi ())
             return 1 ;
         if ( is3GNet ()) {
             return 0 ;
         }
         return - 2 ;
     }
         
     public boolean isNetworkConnected() {
         NetworkInfo ni = (( ConnectivityManager) this. mContext
                 . getSystemService( "connectivity" )). getActiveNetworkInfo ();
         if (( ni != null ) && ( ni .getState () == NetworkInfo .State . CONNECTED)) {
             return true ;
         }
         return false ;
     }
      //添加网络监听
         
    public void addNetworkListener (NetworkListener listener)   {
         synchronized ( this. mListeners ) {
             if ( listener == null) {
                 throw new IllegalArgumentException ();
             }
             if ( this. mListeners .size () == 0) {
                 IntentFilter filter = new IntentFilter ();
                filter . addAction( "android.net.conn.CONNECTIVITY_CHANGE" ) ;
                 this. mContext .registerReceiver ( this. mNetworkReceiver, filter );
             }
             if ( !this. mListeners .contains ( listener))
                 this. mListeners .add ( listener) ;
         }
     }
      //wifi 状态
    
 public boolean isWifi() {
         ConnectivityManager manager = ( ConnectivityManager)   this. mContext
                 . getSystemService( "connectivity" );
         NetworkInfo wifi = manager. getActiveNetworkInfo() ;
         return ( wifi != null ) && ( wifi .getType () == 1 ) ;
     }
      //移动网络状态
 
    public boolean is3GNet() {
         ConnectivityManager manager = ( ConnectivityManager)   this. mContext
                 . getSystemService( "connectivity" );
         NetworkInfo mobile = manager. getActiveNetworkInfo() ;
         return ( mobile != null ) && ( mobile. getType () == 0 ) ;
     }
     //移除网络监听
   
  public void removeNetworkListener ( NetworkListenerlistener ) {
         synchronized ( this. mListeners ) {
             if ( !this. mListeners .contains ( listener)) {
                 return;
             }
             this. mListeners .remove ( listener) ;
             if ( this. mListeners .size () == 0)
                 try {
                     this. mContext .unregisterReceiver ( this. mNetworkReceiver) ;
                 } catch (Exception localException) {
                 }
         }
     }
     //向外提供网络连接 和没有连接的接口
    
 public static abstract interface NetworkListener {
         public abstract void onNetworkConnected ();
         public abstract void onNetworkDisconnected () ;
     }
     //断网情况下发送广播
  
   private class NetworkReceiver extends BroadcastReceiver {
         private NetworkReceiver () {
         }
         public void onReceive( Context context , Intent intent ) {
             if ( NetWork .this. mNetChange != NetWork .this. getNetChange ()) {
                 NetWork .this. mNetChange = NetWork .this. getNetChange ();
                 synchronized ( NetWork. this. mListeners) {
                     for ( NetWork .NetworkListener listener :  NetWork .this. mListeners ) {
                        listener . onNetworkDisconnected() ;
                     }
                     if ( NetWork. this. isNetworkConnected())
                         for ( NetWork. NetworkListenerlistener : NetWork .this. mListeners )
                            listener . onNetworkConnected() ;
                 }
             }
         }
     }
}

© 著作权归作者所有

逆生长
粉丝 0
博文 5
码字总数 1859
作品 0
深圳
私信 提问
android常用工具类 --andutils-已过期

andutils 是 Android 的常用工具类. 日志工具类: 即使过去logcat中的日志信息(通过当前app的pid进行日志筛选,日志可分等级过滤),当日志保存到一定大小会发送到指定的邮箱。 汉字转换拼音...

尘凡
2012/08/30
3.9K
1
网络穿透与音视频技术(5)——NAT映射检测和常见网络穿越方法论(NAT检测实践2)

版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) https://blog.csdn.net/yinwenjie/article/details/82943799 (...

说好不能打脸
2018/10/15
0
0
信息安全工具集合

漏洞及渗透练习平台 WebGoat漏洞练习环境 https://github.com/WebGoat/WebGoat https://github.com/WebGoat/WebGoat-Legacy Damn Vulnerable Web Application(漏洞练习平台) https://github.......

飞侠119
2017/04/06
0
0
OpenCV开发(2)——神经网络使用示例

OpenCV3.4的神经网络功能主要提供了以下三种: ml模块中的多层感知机(Artificial Neural Networks - Multi-Layer Perceptrons),提供了MLP的创建、训练、参数设置等函数。如: 请参看帮助文...

holygao
2018/06/28
0
0
Blackarch工具学习记录--工具分类

一、起因 Blackarch是一个基于archlinux集成了安全工具集的linux发行版。我也是因为遇到一个系统因为存在漏洞需要重现,接解到这个linux发行版。也在一点一点的学习,因此将学习的过程记录下...

janl
2018/09/13
305
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
22分钟前
3
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
28分钟前
3
0
Niushop开源商城系统-分销商管理

分销商管理 1.分销员的招募与管理 如何申请成为分销员? 在wap端个人中心满足之前设置的升级条件,可以申请分销员 开启分销商审核,需要在后台分销商管理——》待审核处进行审核通过。 通过完...

niushop-芳
28分钟前
2
0
为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠...

cs平台
30分钟前
4
0
高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码。利用该代码,无需用户交互操作,即...

Mr_zebra
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部