Не удается установить WifiConfiguration при включении точки доступа Wi-Fi с помощью setWifiApEnabled

Я пытаюсь настроить свое Android-устройство как точку доступа, используя код, который я видел здесь раньше:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "MyAccessPoint";

Method method = wifi.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(wifi, netConfig, true);

теперь мне удалось включить его, но без SSID, который я установил в WifiConfiguration.

Это сводит меня с ума.

Кто-нибудь?


person xhuur    schedule 28.08.2011    source источник
comment
Я не эксперт в этом, но проверили ли вы свой манифест на наличие правильных разрешений?   -  person D-Dᴙum    schedule 28.08.2011
comment
@Kerubu Да, вы правы, проблема может быть в этом. @FLEXpert Попробуйте добавить разрешения CHANGE_WIFI_STATE CHANGE_WIFI_MULTICAST_STATE и ACCESS_WIFI_STATE в свой манифест. developer.android.com/reference/android/   -  person Nikola Despotoski    schedule 28.08.2011
comment
Я, кажется, помню, что у меня было несколько проблем с этим, и смутно помню, как читал, что андроид тихо выходит из строя, если приложение не имеет правильных разрешений, поэтому программисты немного остаются в неведении!   -  person D-Dᴙum    schedule 28.08.2011
comment
хорошо, мне наконец удалось изменить SSID, но не на телефонах HTC   -  person xhuur    schedule 29.08.2011
comment
так как вам наконец удалось изменить SSID ??   -  person arnodenhond    schedule 01.03.2012


Ответы (2)


Перед вызовом метода «setWifiApEnabled» вам нужно вызвать «getWifiApConfiguration», чтобы получить конфигурацию Wifi по умолчанию.
Затем измените SSID и пароль, а затем вызовите «setWifiApConfiguration» с измененной конфигурацией Wifi, а затем вызовите «setWifiApEnabled».
Вот код.

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

getWifiConfig = wifi.getClass().getMethod("getWifiApConfiguration",null);
WifiConfiguration myConfig = (WifiConfiguration) getWifiConfig.invoke(wifi,null);

myConfig.SSID = "Hello World";

setWifiConfig = wifi.getClass().getMethod("setWifiApConfiguration",WifiConfiguration.class);
setWifiConfig.invoke(wifi,new Object[]{myConfig,true});

enableWifi = wifi.getClass().getMethod("setWifiEnabled",WifiConfiguration.class,boolean.class);
enableWifi.invoke(wifi,null,true);
person Mayank Mishra    schedule 11.04.2013
comment
Спасибо за решение. Одна вещь, которую я заметил во время разработки. Это не работает с устройствами HTC. - person AndroGeek; 14.08.2013

Посмотрите, как это работает, в API Wi-Fi для Android 2.3.

person bbodenmiller    schedule 12.05.2012