写之前先简单介绍下发现的问题:

 A手机创建热点"mini",B手机在连接热点之前,连接的SSID叫做"haha",这时使用enablenetwork(netID, true)方法,连接A创建的热点"mini",一般出现的过程就是先断开"haha",连接"mini"热点,这个过程中,大部分的手机会成功连接上"mini",但是部分手机如OPPO R7 Plus就不能连接上"mini",这种型号的手机连接过程是先断开"haha",连接"mini"热点,但是最后连接的还是"haha",这是为什么呢?
    原来,wifiManager.enableNetwork(netID, true);这个方法只是执行 命令让去连接"指定的SSID",就算返回true也不代表最终连接的wifi是指定的wiifi,这是为什么,是因为我们Wifi断开跟某个SSID连接的时候,系统读取了一个优先级连接,判断出一个要连接的SSID,而我们只想连接我们的SSID,这样此时相当于有两个线程同时在进行,一但我们的SSID先连接上,System的连接晚我们一步连接上,就会导致我们刚连接上的SSID,马上就断开了。          参考链接:http://www.bubuko.com/infodetail-1124873.html,受益良多

期间还遇到一个问题就是连接无密热点wifi的情况下wifiManager.addNetwork(wifiConfig)返回的netid为-1,这种情况下直接做以下处理,所有目前能遇到的问题都在demo里面处理了,遇到相同问题的童鞋可以下载看看

//            config.wepKeys[0] = "";   
              config.hiddenSSID = true;
              config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
//            config.wepTxKeyIndex = 0;

以下奉上解决办法的demo的下载地址

http://download.csdn.net/detail/zs20082012/9718632

写之前先简单介绍下发现的问题: A手机创建热点"mini",B手机在连接热点之前,连接的SSID叫做"haha",这时使用enablenetwork(netID, true)方法,连接A创建的热点"mini",一般出现的过程就是先断开"haha",连接"mini"热点,这个过程中,大部分的手机会成功连接上"mini",但是部分手机如OPPO R7 Plus就不能连接上"mini",这种型号的手
登录到Blackboard时自动填充 NetID 当黑板不登录Blackboard和Chrome时自动记住您的 NetID 会保存您的 NetID 并同步到您的Google帐户,以便您登录的任何Chrome浏览器都可以访问该ID 支持语言:English
{@link android .os.Build.VERSION_CODES#Q} or above, this API will always return false. 解决 方法: 无解 Applications are not allowed to ( enable )disable network s created by other applications. 解决 方法: disable Network enable Network 必须由创建该网络的应用调用才会返回 true 。如果这个网络是.
原因: enable Network 会断开的当前 连接 wifi ,再 连接 指定 wifi ,而此时系统检测到 wifi 断开,也会自动 连接 wifi (默认为最后 连接 成功的那个 wifi ),因此可能 导致 调用 enable Network 却无法 连接 到指定 wifi ,或者 连接 成功后又被断开。 解决 方法:  修改 wifi 优先级是 无效 的,原因略。 有2种 解决 方法,第一种用反射得到 WifiManager 的connect方
我的上篇博客研究了 Android 10最新API如何 连接 WIFI 问题 ,但实际发现bug巨多,无奈只能换种思路。 然后发现一个就简单的方法,我将编译版本和目标版本都改为如下: compileSdkVersion 28 targetSdkVersion 28 add Network enable Network 就都可以使用了。然后就可以继续使用原来的方法了。 当然这也是一种规避方案,实际在...
最近在做一个需求,在 连接 成功一个 Wifi 后,此时再去 连接 第二个 Wifi ,这时无论第二个 wifi 是否 连接 成功,都不能再去自动 连接 第一个 Wifi .也就是说我需要在 连接 第二个的过程中去把第一个 Wifi 的密码忘记。 WifiManager 有一个.forget( netId , listener)的方法是用来忘记密码的。这个时候第一个参数为 network Id,也就是说我需要获取到已 连接 wifi network
Android 检测网络是否可用并打开、扫描、 连接 WIFI 需求:要求先检查网络是否可用,如果可用就跳过网络设置界面,如果不可用就打开 WIFI 并扫描网络后去手动输入密码 连接 1.添加权限<uses-permission android :name=" android .permission.ACCESS_ NETWORK _STATE"/> <uses-permission android :name="andr
android 系统启动:http://blog.csdn.net/yicao821/article/details/6893752 最近在分析 Android WIIF框架,顺便就把 Android 系统启动过程做了个流程分析,在这分享下我的学习经验。 部分 有修正网络文章。欢迎拍砖! Android 系统从Linux内核启动后分为4个基本步骤: (1) init进程启动 (2) Native服务启动
```java WifiManager wifiManager = ( WifiManager ) getApplicationContext().getSystemService(Context. WIFI _SERVICE); 然后可以通过以下方法获取到 WiFi 列表: ```java List<ScanResult> scanResults = wifiManager .getScanResults(); 根据扫描结果可以选择要 连接 WiFi 热点 ,然后使用以下方法 连接 : ```java Wifi Configuration wifi Config = new Wifi Configuration(); wifi Config.SSID = "\"" + ssid + "\""; wifi Config.preSharedKey = "\"" + password + "\""; int netId = wifiManager . add Network ( wifi Config); wifiManager .disconnect(); wifiManager . enable Network ( netId , true ); wifiManager .reconnect(); 其中,`ssid`是 WiFi 名称,`password`是密码。这里创建了一个 WiFi 配置对象,并设置了SSID和密码,然后将其添加到 WiFi 管理器中,并 连接 到该网络。 2. Socket通信 连接 WiFi 热点 之后,可以使用Socket进行通信。首先需要创建一个Socket对象: ```java Socket socket = new Socket(ip Add ress, port); 其中,`ip Add ress`是要 连接 的设备的IP地址,`port`是端口号。然后就可以使用输入输出流进行数据读写了: ```java OutputStream outputStream = socket.getOutputStream(); outputStream.write(data.getBytes()); outputStream.flush(); InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String message = bufferedReader.readLine(); 这里的`data`是要发送的数据,`message`是收到的数据。注意,在使用完Socket之后要关闭它: ```java socket.close(); 以上就是 Android 利用 WiFi 进行通信的基本方法。 ReactNative打开自己写好的Android原生activity,点HOME键返回手机桌面再次点击相应的图标打开应用除JS所在的activity外,其他的activity都被强制销毁了 ReactNative 深层连结 ReactNative 热更