Android wifimanager总是返回true

2024-03-14

这简直要了我的命,任何帮助将不胜感激。

我想使用 wifi 管理器连接到开放网络。我遇到的问题是该代码声称连接到任何网络 - 甚至是不存在的网络。下面是执行并使用网络 SSID 调用的完整代码。无论您传递给它什么字符串作为网络的 SSID,即使不存在任何形状或形式的此类网络,enableNetwork 声明都会返回 true,我认为这意味着它已连接到该网络。

我需要做的是确保我有联系。因此,如果我传递的网络 SSID 不存在(例如,超出范围),则 API 在尝试连接时应返回失败。

任何想法/提示/建议将不胜感激。

public boolean conto (String network){

    WifiConfiguration wifiConfiguration = new WifiConfiguration();
    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    List<WifiConfiguration> configs = null;
    int inetId = -1;


    // make sure there are no funny stuff in the config
    configs = wifi.getConfiguredNetworks();
    for (WifiConfiguration config : configs) {
        wifi.removeNetwork(config.networkId);
        Log.d("********", "Removed Network: SSID=[" + config.SSID + "] and ID=[" + config.networkId + "]");

    }

    // Now add the network
    wifiConfiguration.SSID = "\"" + network + "\"";
    wifiConfiguration.hiddenSSID = false;
    //wifiConfiguration.priority = 1;
    //wifiConfiguration.networkId = 999;

    inetId = wifi.addNetwork(wifiConfiguration); 
    if(inetId < 0) {
            Log.d("********", "Could Not Add Network......... [" + wifiConfiguration.SSID + "]"); 

        } 
        else { 

            Log.d("********", "Added Network......... [" + wifiConfiguration.SSID + "]");

            // Lets be paranoid and double check the config file
            Log.d("********", " +++++++++++++++++++++++++ This is what I have in Config File");
            configs = wifi.getConfiguredNetworks();
            for (WifiConfiguration config : configs) {
                Log.d("********", "In the Config file after add, SSID=[" + config.SSID + "], ID=[" + config.networkId + "]");

            }

            // Now Enable the network
            boolean successConnected = wifi.enableNetwork(inetId, true); 
            //boolean successAssociated = wifi.reassociate(); This did not change the results

            if(successConnected) { 
                Log.d("********", "Connected to......... [" + inetId + "]");
            } 
            else { 

                Log.d("********", "Could Not Connect to......... [" + inetId + "]"); 

            } 


        }
        return false;
    }

我认为问题在于您的代码基于这样的假设:连接到 WiFi 网络是一个同步过程,但事实并非如此。方法enableNetwork()连接发生时不会阻塞,然后返回连接成功或失败的结果,它会立即返回,结果只是请求是否正确到达 WiFi 服务和请求者。

如果您想了解设备的连接状态,则需要监控WifiManager. SUPPLICANT_STATE_CHANGED_ACTION and WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION广播意图动作BroadcastReceiver。一旦您启动连接过程,这些回调将告诉您事情的进展情况。例如,如果您传入一个不存在的网络,则连接状态几乎应立即直接变为“DISCONNECTED”。而一个有效的网络会经历关联、认证、连接的过程。所有这些步骤都是通过这些广播枚举的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android wifimanager总是返回true 的相关文章

随机推荐

  • 从 ruby​​-ncurses 中获取 256 种颜色

    我的终端有 256 种颜色 效果很好 测试脚本在这里 http www frexx de xterm 256 notes 但是当我使用 ncurses 通过 Ruby ncurses 时它停止工作 打印该页面上给出的转义序列工作正常 但是当
  • 这句话有什么道理呢? (Sun 对 Java 变量的命名约定)

    这几天我一直在引用Sun的文档中的这段话 直到现在我才停下来思考它在说什么 但我却无法理解它的意义 请记住 英语不是我的母语 命名约定 http java sun com docs codeconv html CodeConventions
  • Objective C 中需要指针对象

    一个非常基本的问题 但理解这些概念确实非常重要 在 C 或 C 语言中 我们通常不使用指针变量来存储值 即值简单地存储为 int a 10 但在 ios sdk 中 在 Objective C 中 我们使用的大多数对象都是通过用它们表示指针
  • 将 Laravel 事件订阅者排队

    我通过事件订阅者处理多个事件 而不是创建单独的事件 侦听器 我想对其中几个事件进行排队 但我还没有找到实现这一目标的方法 我已经关注官方了文档 https laravel com docs 5 2 events event subscrib
  • 如何获取适用于 Xcode 3.2 的 iPhone SDK 2.2.1?

    在我升级到 Snow Leopard 和 Xcode 3 2 后 我真的很后悔 Xcode 丢失了所有的 SDK 我是那些仍然想开发 2 2 1 的老式白痴之一 但苹果不向我提供旧的 SDK 下载 现在我很聪明 做了很多时间机器备份 但是
  • 在 .NET 中检测 3G 互联网连接

    我们的应用程序使用 RSS 从互联网下载数据 但在连接 3G 的计算机上出现连接问题 我们想要检测 3G EDGE GPRS 连接 以便我们可以更改应用程序行为 显示警告或连接状态 这将如何完成 The NetworkInterface h
  • Linkedin Ads API “dateRange”请求参数的格式是什么?

    dateRange 的正确格式是什么rest liv2 文档中当前的示例不支持它 我不明白rest li文档 确切地说 它的格式是什么 这是我提出的要求 Headers X Restli Protocol Version 2 0 0 Aut
  • 如何在 IntelliJ 中使用拖放来实现 java swing

    我正在使用 IntelliJ 使用 swing 进行 java 应用程序开发 使用布局管理器管理内容很困难 那么 是否有任何工具可以像 Visual Studio for vb net 一样提供拖放功能 您可以使用 IntelliJ GUI
  • 本地化 Laravel

    我一直在尝试更新网站的语言 控制器 public function getUpdateLanguage Request request request data request gt all Session put locale reque
  • 如何获取当前类的类型?

    这有点难以解释 但我到处都找过了 但找不到任何好的答案 我还看到了 Stack Overflow 的问题如何引用 Java 中接口实现的类类型 https stackoverflow com questions 8161712 how ca
  • #include 在 main() 函数中

    我想知道里面是否有可能main 来自 C 的函数来包含一些东西 例如 在 Cell 程序中 我定义了 cache api h 的参数 稍后将在main 我想改变的功能 我明白什么是定义的 define可以是未定义的 undef程序中的任何位
  • OmniAuth::NoSessionError - 您必须提供会话才能使用 OmniAuth。 (在设备中配置)

    您好 我正在学习如何使用omniauth 作为 ember 应用程序的后端 当我运行我的应用程序时 我收到下面提到的错误 OmniAuth NoSessionError 您必须提供会话才能使用 OmniAuth 在救援轨道上 我的应用程序在
  • 如何使这个 JS 函数异步?

    function takesTime for var i 0 i
  • AVFoundation 根据预览宽高比裁剪捕获的静态图像

    我的问题与这个问题大多相似 裁剪 AVCaptureSession 捕获的图像 https stackoverflow com questions 5780580 cropping image captured by avcapturese
  • 我如何将 pack uri 资源与媒体播放器一起使用?

    我有一些非常简单的代码 只需要播放指定音量的声音 如下所示 var mp new MediaPlayer mp Open uri mp Volume volume mp Play 出现问题是因为这是 Prism 模块的一部分 我不知道执行程
  • spring security的配置问题

    我有 Spring Security 应用程序 以下是我的 security context xml
  • 列表理解中的“with”关键字? [复制]

    这个问题在这里已经有答案了 我遇到了这种用于读取文件中的行的语法 with open as f for line in f
  • 使用 TFS API 检测文件删除更改(自动,无需 VS 交互)

    我在 tfs 工作区中有一个本地文件夹并使用 TFS API 每天晚上我都会删除这个文件夹 然后将数据库脚本编写为 sql 文件 如果现在添加或编辑了某些内容 则会找到更改并进入待处理的更改以进行签入 问题是我如何使用 TFS API 检测
  • Python将字符串转换为变量名

    我知道这可能会出现重复 但到目前为止我还没有找到 或者应该理解 我正在寻找的答案 我有一个字符串列表 想要将每个字符串转换为一个变量名 然后为其分配一些内容 我知道我可能需要一个字典 但我对它们不熟悉 因为我对 python 相对较新 并且
  • Android wifimanager总是返回true

    这简直要了我的命 任何帮助将不胜感激 我想使用 wifi 管理器连接到开放网络 我遇到的问题是该代码声称连接到任何网络 甚至是不存在的网络 下面是执行并使用网络 SSID 调用的完整代码 无论您传递给它什么字符串作为网络的 SSID 即使不