android 设置默认wifi,[Android][Framework]设置默认WiFi配置

本文深入解析Android系统中如何设置默认的WiFi热点配置,从TetherSettings到WifiApDialog,再到WifiServiceImpl和WifiStateMachine,一步步揭示配置过程。通过mWifiConfig获取并填充对话框内容,最后在WifiApConfigStore中使用getDefaultApConfiguration生成包含默认SSID和WPA2_PSK安全性的配置。

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

点击Wifi热点配置选项,会弹出一个对话框,WifiApDialog.java。这个对话框会在onCreate的时候填入一些默认内容:

if (mWifiConfig != null) {

mSsid.setText(mWifiConfig.SSID);

if (mWifiConfig.apBand == 0) {

mBandIndex = 0;

} else {

mBandIndex = 1;

}

mSecurity.setSelection(mSecurityTypeIndex);

if (mSecurityTypeIndex == WPA2_INDEX) {

mPassword.setText(mWifiConfig.preSharedKey);

}

}

内容都是从mWifiConfig获取的,这个mWifiConfig是在构造的时候赋值:

// TetherSettings.java

private void initWifiTethering() {

final Activity activity = getActivity();

mWifiConfig = mWifiManager.getWifiApConfiguration(); // 这里获取的

mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);

mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);

mRestartWifiApAfterConfigChange = false;

if (mWifiConfig == null) {

final String s = activity.getString(

com.android.internal.R.string.wifi_tether_configure_ssid_default);

mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),

s, mSecurityType[WifiApDialog.OPEN_INDEX]));

} else {

int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);

mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),

mWifiConfig.SSID,

mSecurityType[index]));

}

}

@Override

public Dialog onCreateDialog(int id) {

if (id == DIALOG_AP_SETTINGS) {

final Activity activity = getActivity();

mDialog = new WifiApDialog(activity, this, mWifiConfig);

return mDialog;

}

return null;

}

继续跟代码

// WifiServiceImpl.java

/**

* see {@link WifiManager#getWifiApConfiguration()}

* @return soft access point configuration

*/

public WifiConfiguration getWifiApConfiguration() {

enforceAccessPermission();

return mWifiStateMachine.syncGetWifiApConfiguration();

}

// WifiStateMachine.java

public WifiConfiguration syncGetWifiApConfiguration() {

return mWifiApConfigStore.getApConfiguration();

}

// WifiApConfigStore.java

/**

* Generate a default WPA2 based configuration with a random password.

* We are changing the Wifi Ap configuration storage from secure settings to a

* flat file accessible only by the system. A WPA2 based default configuration

* will keep the device secure after the update.

*/

private WifiConfiguration getDefaultApConfiguration() {

WifiConfiguration config = new WifiConfiguration();

config.SSID = mContext.getResources().getString(

R.string.wifi_tether_configure_ssid_default);

config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);

String randomUUID = UUID.randomUUID().toString();

//first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13);

return config;

}

所以,只需要在getDefaultApConfiguration配置默认的热点相关内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值