Android 12 WiFi 连接流程

本文深入探讨了Android 12中WiFi连接的流程,涉及Settings应用程序、WifiManager、WifiServiceImpl、ConnectHelper等多个组件以及wpa_supplicant的相关源码,包括network的添加、选择和连接过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java
packages/modules/Wifi/framework/java/android/net/wifi/WifiManager.java
packages/modules/Wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
packages/modules/Wifi/service/java/com/android/server/wifi/ConnectHelper.java
packages/modules/Wifi/service/java/com/android/server/wifi/ConcreteClientModeManager.java
packages/modules/Wifi/service/java/com/android/server/wifi/ClientModeImpl.java
packages/modules/Wifi/service/java/com/android/server/wifi/WifiNative.java
packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java
packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaNetworkHal.java

WifiSettings.java =>onSubmit(WifiDialog2 dialog):
                    -if (dialogMode == WifiConfigUiBase2.MODE_MODIFY)
                       --if (config == null)
                           Toast.makeText(getContext(), R.string.wifi_failed_save_message,Toast.LENGTH_SHORT).show();//config为null,弹出Toast
                       --else
                           mWifiManager.save(config, mSaveListener);//修改信息后,将信息进行保存
                    -else if (dialogMode == WifiConfigUiBase2.MODE_CONNECT || (dialogMode == WifiConfigUiBase2.MODE_VIEW && wifiEntry.canConnect()))
                       --if (config == null)
                           connect(wifiEntry, false /* editIfNoConfig */,false /* fullScreenEdit*/);
                       --else
                          mWifiManager.connect(config, new WifiConnectActionListener());//调用connect进行连接
-->WifiManager.java=>connect(@NonNull WifiConfiguration config, @Nullable ActionListener listener):connectInternal(config, WifiConfiguration.INVALID_NETWORK_ID, listener);
                       ->connectInternal(@Nullable WifiConfiguration config, int networkId,@Nullable ActionListener listener):mService.connect(config, networkId, listenerProxy);
------>WifiServiceImpl.java=> connect(WifiConfiguration config, int netId, @Nullable IActionListener callback):
                              -mMakeBeforeBreakManager.stopAllSecondaryTransientClientModeManagers(() ->mConnectHelper.connectToNetwork(result, wrapper, uid));
-------->ConnectHelper.java=>connectToNetwork(@NonNull NetworkUpdateResult result,@NonNull ActionListenerWrapper wrapper,int callingUid):
                             -connectToNetwork(mActiveModeWarden.getPrimaryClientModeManager(), result, wrapper, callingUid);//mActiveModeWarden.getPrimaryClientModeManager()状态机获取当前状态
                             ->connectToNetwork(@NonNull Clie
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值