Я хочу использовать пользовательский агент по умолчанию для телефона в соединении HttpClient и хотел бы знать, есть ли способ получить агент пользователя без необходимости запроса WebView.
Есть ли способ получить строку пользовательского агента по умолчанию, кроме WebView.getSettings(). GetUserAgentString()?
Ответ 1
Очень поздний ответ, для других, которые могут искать это.
Я искал способ получить строку пользовательского агента, используемую HttpUrlConnection, использовать ее с HttpClient и изменить ее с помощью моей собственной информации о версии. Таким образом, мое приложение для Android содержит некоторую полезную информацию о версии, которую я могу извлечь из файлов журнала сервера (версия Android, имя устройства/тип и версия моего приложения).
Например, строка пользовательского агента для моего телефона при использовании HttpUrlConnection выглядит так:
Dalvik/1.4.0 (Linux; U; Android 2.3.5; HTC Desire HD A9191 Build/GRJ90)
Эта строка может быть получена из системных свойств следующим образом:
String userAgent = System.getProperty( "http.agent" );
Ответ 2
Начиная с уровня API 17, существует статический метод в WebSettings
, который возвращает строку User-Agent по умолчанию, используемую WebView:
WebSettings.getDefaultUserAgent(context)
Поскольку метод статичен, вам не нужен экземпляр WebView для его запуска.
Ответ 3
Нет, это afaik единственный официальный способ получить строку агента пользователя.
Btw, возвращаемая строка выглядит примерно так:
Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 – G1 Phone
Серверы Http используют строку пользовательского агента, чтобы обслуживать версии документов, зависящие от браузера. Это имело бы смысл только в том случае, если вам нужна мобильная версия какой-либо страницы и/или если вы хотите отобразить ее позже в браузере Android.