Ответ 1
У меня есть лишь частичное решение проблемы. Надеюсь, этого будет достаточно для приложения, которое вы разрабатываете.
SSID и пароль жестко закодированы системой Android при запуске Hotspot. Просмотрев код AOSP, я вижу, что одна и та же точка доступа может использоваться несколькими приложениями. Эта конфигурация для этой точки доступа (имя класса WifiConfiguration
) также используется совместно со всеми запрашивающими приложениями. Эта конфигурация передается обратно в приложение в обратном вызове onStarted(LocalOnlyHotspotReservation reservation)
. Вы можете получить WifiConfiguration
, вызвав reservation.getWifiConfiguration()
. Вы получите всю необходимую информацию из объекта WifiConfiguration
. Таким образом, вы можете прочитать Pre-Shared Key и имя точки доступа. Но я не думаю, что вы можете их изменить
FYI. Соответствующий код, который устанавливает конфигурацию Wi-Fi (включая жестко кодированный SSID и ключ WPA2-PSK), выполняется следующим фрагментом кода
/**
* Generate a temporary WPA2 based configuration for use by the local only hotspot.
* This config is not persisted and will not be stored by the WifiApConfigStore.
*/
public static WifiConfiguration generateLocalOnlyHotspotConfig(Context context) {
WifiConfiguration config = new WifiConfiguration();
config.SSID = context.getResources().getString(
R.string.wifi_localhotspot_configure_ssid_default) + "_"
+ getRandomIntForDefaultSsid();
config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
config.networkId = WifiConfiguration.LOCAL_ONLY_NETWORK_ID;
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;
}