1、起点应该是
packages/apps/Settings/src/com/android/settings/wifi/WifiSettings2.java
会用到的settinglib库:
frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
public void handleBroadcast(Intent intent) {
if (mWifiManager == null) {
return;
}
Log.i(TAG, "handleBroadcast");
String action = intent.getAction();
if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
Log.i(TAG, "handleBroadcast, WIFI_STATE_CHANGED_ACTION");
updateWifiState();
} else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
Log.i(TAG, "handleBroadcast, NETWORK_STATE_CHANGED_ACTION");
updateWifiState();
final NetworkInfo networkInfo =
intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
connected = networkInfo != null && networkInfo.isConnected();
Log.i(TAG, "handleBroadcast, NETWORK_STATE_CHANGED_ACTION, networkInfo = " + networkInfo);
mWifiInfo = null;
ssid = null;
if (connected) {
Log.i(TAG, "handleBroadcast, NETWORK_STATE_CHANGED_ACTION, connected is true");
mWifiInfo = mWifiManager.getConnectionInfo();
if (mWifiInfo != null) {
if (mWifiInfo.isPasspointAp() || mWifiInfo.isOsuAp()) {
ssid = mWifiInfo.getPasspointProviderFriendlyName();
} else {
ssid = getValidSsid(mWifiInfo);
}
updateRssi(mWifiInfo.getRssi());
maybeRequestNetworkScore();
}
}
updateStatusLabel();
mCallback.run();
} else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
Log.i(TAG, "handleBroadcast, RSSI_CHANGED_ACTION");
// Default to -200 as its below WifiManager.MIN_RSSI.
updateRssi(intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200));
updateStatusLabel();
mCallback.run();
}
}
frameworks/opt/net/wifi/service/java/com/android/server/wifi/SupplicantStateTracker.java
这里可以广播给应用层状态
private void sendSupplicantStateChangedBroadcast() {
Intent intent = new Intent(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
| Intent.FLAG_RECEIVER_REPLACE_PENDING);
intent.putExtra(WifiManager.EXTRA_NEW_STATE, (Parcelable) state);
if (failedAuth) {
intent.putExtra(
WifiManager.EXTRA_SUPPLICANT_ERROR,
WifiManager.ERROR_AUTHENTICATING);
intent.putExtra(
WifiManager.EXTRA_SUPPLICANT_ERROR_REASON,
reasonCode);
Log.w(TAG, "wqy-framework, sendSupplicantStateChangedBroadcast 1");
}
Log.w(TAG, "wqy-framework, sendSupplicantStateChangedBroadcast 2");
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
}