Изменить конфигурацию мобильной точки доступа

1

Я пытаюсь запустить горячую точку с новым именем и открывать доступность.

    wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    wifiConfig.SSID = "\"MySSID\"";
    wifiConfig.networkId = 1;
    methodNum = getMethodNumber("setWifiApEnabled");
    try {
        wmMethods[methodNum].invoke(wifiManager, wifiConfig, true);
    } catch (IllegalArgumentException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IllegalAccessException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (InvocationTargetException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }        

Я получаю правильный метод и кажется, что он запускает горячую точку телефона, но конфигурация не изменяется.

Я попытался получить текущие данные конфигурации с помощью getWifiApConfiguration и я ничего не получаю с ним, никаких ssid, а не текущего шифрования.

Я использую HTC Evo 3d для отладки.

  • 0
    разрешения указаны?
  • 0
    Вот те разрешения, которые я пробовал: ACCESS_WIFI_STATE. UPDATE_DEVICE_STATS, CHANGE_WIFI_STATE, UPDATE_DEVICE_STATS. CHANGE_NETWORK_STATE. WRITE_SETTINGS
Показать ещё 1 комментарий
Теги:
android-wifi

2 ответа

1
Лучший ответ

Кажется, что это проблема с HTC. Некоторые из моих друзей пробовали аналогичный код на HTC и других устройствах. Не работал на HTC, работал над другими.

4

Некоторые телефоны htc, похоже, используют класс типа HotspotProfile для сохранения его конфигурации. Поэтому перед вызовом setWifiApEnabled вам нужно установить ssid в htc образом:

if (isHtc) setHTCSSID(config);
methodNum = getMethodNumber("setWifiApEnabled");
try {
    wmMethods[methodNum].invoke(wifiManager, wifiConfig, true);
    ...

isHtc может быть вычислен как:

 try { isHtc = null!=WifiConfiguration.class. getDeclaredField("mWifiApProfile");  }
 catch (java.lang.NoSuchFieldException e) { isHtc = false }

и setHTCSSID будет:

public void setHTCSSID(WifiConfiguration config) {
    try {
        Field mWifiApProfileField = WifiConfiguration.class.getDeclaredField("mWifiApProfile");
        mWifiApProfileField.setAccessible(true);
        Object hotSpotProfile = mWifiApProfileField.get(config);
        mWifiApProfileField.setAccessible(false);

        if(hotSpotProfile!=null){
            Field ssidField = hotSpotProfile.getClass().getDeclaredField("SSID");
            ssidField.setAccessible(true);
            ssidField.set(hotSpotProfile, config.SSID);
            ssidField.setAccessible(false);

        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

Я нашел эту информацию в некоторых китайских блогах: http://xiaxingwork.iteye.com/blog/1727722 и http://blog.sina.com.cn/s/blog_53dd443a010109i8.html

  • 0
    Привет @luis Я хочу создать горячую точку в моем телефоне HTC, и я создаю это, но я не могу подключиться к моей точке доступа, она собирается настроить IP-адрес, но никогда не собираюсь сделать мой полный вопрос здесь stackoverflow.com/questions/29326985/… can пожалуйста, помогите мне?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню