Intereting Posts
Связь между устройствами через Bluetooth с помощью Phonegap на Android? В чем разница setVisibility (View.INVISIBLE); setVisibility (0); Время, затраченное на первый запуск с AS 2.0 и gradle 2.0 Как изменить цвет заголовка AlertDialog и цвет строки под ним Junit.framework.AssertionFailedError: Исключение в конструкторе: (java.lang.NoClassDefFoundError) Невозможно использовать SimpleAdapter в ListFragment Отключите значок GPS, когда LocationListener спал NoSuchMethodError для VideoView.setOnPreparedListener () Создание конфигурации Wifi Hotspot в android Раскладка двух столбцов с первой колонкой wrap_content, вторая fill_parent Добавляет пользовательские скины для Android в виртуальное устройство, отсутствующее в ADT Eclipse (Juno) Как я могу управлять звуковыми томами в моем приложении Android? Значение целочисленного xml-ресурса Android не изменяется при переключении между портретом и пейзажем ActivityManager не содержит предупреждения REAL_GET_TASKS Синяя линия над моей навигационной панелью в приложении для Android

Jelly Bean Issue – wifiManager.getConnectionInfo (). GetSSID () – extra ""

Привет всем сообщения об ошибках для вашей информации. ссылка

Неполадки :

КодwifiManager.getConnectionInfo().getSSID()

Вышеприведенный код возвращает текущий SSID, он возвращает текущий SSID с дополнительными котировками вокруг него.

Напр. SSID- internet возвращается как "internet" .

Это видно только на Jelly bean 4.2 с помощью устройства Nexus 7.

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

Код wifiManager.getScanResults(); Однако все равно возвращает все SSID без лишних кавычек.


    Это не ошибка, и поведение правильное в соответствии с документацией по адресу http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getSSID ()

    Так называемая ошибка, по-видимому, была в устройствах до 4.2, потому что они не вернули ее с «корпусом».

    Метод Айдена выглядит хорошо для меня в нынешнем состоянии замешательства, оставленного Android. Однако, будучи теоретически правильным, просто потребовалось бы

     if (ssid.startsWith("\"") && ssid.endsWith("\"")){ ssid = ssid.substring(1, ssid.length()-1); } 

    Это регулярное выражение довольно аккуратно:

     String ssid = wi.getSSID().replaceAll("^\"(.*)\"$", "$1"); 

    Только для заметок

    Изменить ° 1 (в соответствии с вопросом в комментарии):

    Проблема, которую описывает OP, заключается в том, что на некоторых устройствах SSID, возвращаемый getSSID() , заключен в "" тогда как на других устройствах нет. Например, на некоторых устройствах SSID является "MY_WIFI" а на других это MY_WIFI – или используется в Java-коде: "\"MY_WIFI\"" и "MY_WIFI" .

    Чтобы унифицировать оба результата, я предложил удалить " в начале и в конце» только там, потому что " является юридическим символом внутри SSID. В регулярном выражении выше

    ^ Означает с самого начала
    $ Означает в конце
    \" Означает " (экранированный)
    .* Означает любое количество символов
    (...) означает группу захвата, которая может быть отнесена на $1

    Таким образом, все выражение означает: замените "<something>" на <something> где $1 = <something> . Если нет " в конце / начале», регулярное выражение не совпадает и ничего не заменяется.

    См. Класс Java Pattern для получения более подробной информации.

    В то же время я так оборачиваюсь, хотя это и не очень хорошо.

      public String removeQuotationsInCurrentSSIDForJellyBean(String ssid){ int deviceVersion= Build.VERSION.SDK_INT; if (deviceVersion >= 17){ if (ssid.startsWith("\"") && ssid.endsWith("\"")){ ssid = ssid.substring(1, ssid.length()-1); } } return ssid; } 

    Два очень простых варианта:

     string = string.replaceAll("^\" | \"$", ""); 

    а также

     string = string.substring(1, string.length() - 1); 

    Столкнулась с той же проблемой! Используется этот метод, который обратно совместим:

    if (suppliedSSID.equals(connectionInfo.getSSID()) || ("\"" + suppliedSSID + "\"").equals(connectionInfo.getSSID()) { DO SOMETHING }