安卓Wifi流量

标签 android wifi android-wireless

我正在尝试跟踪 wifi 设置代码。我的目的是了解将 WIFI 按钮从 OFF 切换到 ON 后从应用程序到内核层的流程。

当我们进入 Android 的设置页面时,切换 WLAN(WIFI) 按钮,然后 您的 wifi 应该已启用。

  1. 我发现这个页面对应的是WifiSettings.java。在此文件中,当您将按钮从 OFF 切换为 ON 时:

    private void updateWifiState(int state) {
    
    getActivity().invalidateOptionsMenu();
       switch (state) {
            case WifiManager.WIFI_STATE_ENABLING:
            addMessagePreference(R.string.wifi_starting);
            break;
    }
    
    mLastInfo = null;
    mLastState = null;
    mScanner.pause();          
    }  
    

    这个函数会被调用。

  2. 然后我去检查WifiManager.java。我发现:

    /**  
     * Wi-Fi is currently being enabled. The state will change to  
       {@link#WIFI_STATE_ENABLED}  
     if it finishes successfully.  
     *  
     * @see #WIFI_STATE_CHANGED_ACTION  
     * @see #getWifiState()  
     */  
    
    public static final int WIFI_STATE_ENABLING = 2;
    

但是,经过这件事之后,我并没有真正理解如何在tracing the flow上进行更深入的挖掘。

最佳答案

您应该查看 WifiEnabler.java,因为您提到的代码只显示了一些字符串。 在WifiEnabler::onCheckChanged()中,您可以看到调用了mWifiManager.setWifiEnabled()

之后,您可以查看该目录中的WifiManager.java 和其他相关文件。有一个状态机,您应该跟踪状态转换。

一般Android使用的是wpa_supplicant,和Linux差不多。配置文件位于/data/misc/wifi/wpa_supplicant.conf,由Android生成。切换 wifi 开关后,Android 启动 wpa_supplicant 并与其通信。 wpa_supplicant负责扫描并连接到wifi站。

关于安卓Wifi流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341964/

相关文章:

android - 阿杜伊诺 : HC-06 Module receiving wrong data?

android - Flutter SQFlite 一对多关系设置

java - 在 Android 中使用 application/vnd.wfa.wsc 创建 NDEF WiFi 记录

android - ConnectivityManager getActiveNetworkInfo() 始终为空,即使数据流量处于 Activity 状态也是如此

java - android admob真实广告无法加载代码为0的广告请求 - ERROR_CODE_INTERNAL_ERROR

Android 可信凭据和 OkHttp

Android连接到EAP-AKA WiFi

iphone - 通过iPhone浏览wifi硬盘的任何方式

android - 如何获取wifi热点状态

android - MAC中Android Studio的无线USB调试