经研究Android无线连接核心代码WifiManager.java,还是有所发现的。

核心代码如下:

  1. connect(WifiConfiguration config, ActionListener listener)Android 无线连接及连接状态研究_第1张图片
  2. connect(int networkId, ActionListener listenerAndroid 无线连接及连接状态研究_第2张图片
  3. save(WifiConfiguration config, ActionListener listener)Android 无线连接及连接状态研究_第3张图片
如上connect函数,它是一个系统级别的API,而且是被隐藏的,所以在非系统APP中该方法是不可以被调用到的。对非系统APP而言,如果要连接指定的无线网络,只能采用如下顺序已达到该方法的目的:addNetwork、enableNetwork、saveConfiguration和reconnect等。

而且系统API对于每个操作都有结果回调操作,监听接口为ActionListener,其主要代码如下:
Android 无线连接及连接状态研究_第4张图片

ActionListener,包含两个回调函数onSuccess和onFailure。本次研究我们主要关心OnFailure的情况。在以下情况发生时都会触发onFailure的回调。

Android 无线连接及连接状态研究_第5张图片
相关的reason有如下几种:
Android 无线连接及连接状态研究_第6张图片 Android 无线连接及连接状态研究_第7张图片

很遗憾,以上的监听接口同样为系统API级别的,而且所有的错误代码也是被隐藏的,我们无法调用。所以我们从源码角度来看看,是否有连接回调接口。

比如我们要新加一个网络步骤如下:
  1. addNetwork(WifiConfiguration config),没有回调Android 无线连接及连接状态研究_第8张图片
  2. boolean enableNetwork(int netId, boolean attemptConnect),没有回调入口Android 无线连接及连接状态研究_第9张图片
  3. boolean saveConfiguration(),没有回调Android 无线连接及连接状态研究_第10张图片
  4. boolean reconnect(),没有回调Android 无线连接及连接状态研究_第11张图片
如上步骤,每一个步骤都没有添加回调的入口,我们只能通过每一步的结果来知道每一步的成功与否,如若失败我们并不能够知道其真实原因。

无线连接的状态以及结果反馈如下: Android 无线连接及连接状态研究_第12张图片

Android 无线连接及连接状态研究_第13张图片



Android 无线连接及连接状态研究_第14张图片

Android 无线连接及连接状态研究_第15张图片


有两种状态监控级别,大众化的、细粒度的,分别如下:
  1. 大众化的Android 无线连接及连接状态研究_第16张图片
  2. 细粒度的Android 无线连接及连接状态研究_第17张图片
如上所示,这种细粒度的貌似我们可以得到更多的信息,其中有认证中、分配IP地址、失败这些可能是我们比较感兴趣的。
接下来更精彩:
Android 无线连接及连接状态研究_第18张图片
这个函数貌似我们可以得到连接失败的原因,不过这个有待尝试。


总结:
经本次研究得出,如果是非系统级别的应用程序,是不能定制传入回调接口的。非系统级别的应用程序只能收到连接过程及连接结果反馈,当然也可以通过NetworkInfo该类中的getReason方法,获取某种特殊状态的原因,但是这个有待尝试。或许我了解的还不够深入,如有异议请及时反馈,谢谢。

更多相关文章

  1. android 实现沉浸式,状态栏
  2. Android获取系统顶部状态栏(Status Bar)与底部导航栏(Navigation
  3. android设置wifi/bt默认开关状态
  4. android 通过 名称获取图片
  5. Android使用线程获取网络图片的方法
  6. Android中的多媒体显示之图片缩放

随机推荐

  1. Android(安卓)Studio 第八十三期 - Andro
  2. Android读取应用列表权限漏洞
  3. Android动态加载第三方APK的View研究过程
  4. Android(安卓)Studio 翻译插件Translatio
  5. Android中插件开发篇之----类加载器
  6. android 端全新指纹识别框架,适配 androi
  7. Android获取并显示图片
  8. Android性能优化之路(二)
  9. 增加改查――android数据库篇二
  10. Android(安卓)CPU 架构详解