Подтвердить что ты не робот

Есть ли способ получить строку пользовательского агента по умолчанию, кроме WebView.getSettings(). GetUserAgentString()?

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

4b9b3361

Ответ 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.