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 }

    Intereting Posts
    FragmentManager уже выполняет транзакции. Когда безопасно инициализировать пейджер после фиксации? Режим NotificationListenerService и Doze и App Standby Оценка области маяков с помощью службы в фоновом режиме XmlPullParser: PI не должен начинаться с xml, но только на Android 2.3.3 вниз Android: ScrollView не прокручивает Надежный источник времени для апплета JavaCard на SIM-карте Создание проектов Android, которые ссылаются на проекты библиотеки с ANT Какова продолжительность тоста LENGTH_LONG и LENGTH_SHORT Как использовать API контактов для Android 1.x и 2.x одновременно? Как обнаружить Android-устройство – 64-битный или 32-битный процессор? Как разрешить полные значения (целые числа) только в рейтингах? Как построить i686-linux-android-gfortran для android-ndk8b (x86 arch Android)? Передача горизонтальных прокруток Android NestedScrollView в родительский вид Как отобразить конкретную страницу просмотра пейджера при нажатии кнопки в android Android: как сделать снимок экрана своего приложения программно