У меня есть веб-просмотр в моем родном приложении для Android, и мне нужно установить agent
для исправления вида рабочего стола на некоторых веб-сайтах, которые проверяют наличие агента Android с помощью javascript
Код JavaScript:
if (navigator.userAgent.indexOf("Android") != -1) {
//do something
}
на стороне Android Я попытался установить агент следующим образом
public void setDesktopMode(WebView webView, boolean enabled) {
String newUserAgent = webView.getSettings().getUserAgentString();
if (enabled) {
try {
String ua = webView.getSettings().getUserAgentString();
String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
} catch (Exception e) {
e.printStackTrace();
}
} else {
newUserAgent = null;
}
webView.getSettings().setUserAgentString(newUserAgent);
webView.getSettings().setUseWideViewPort(enabled);
webView.getSettings().setLoadWithOverviewMode(enabled);
webView.reload();
}
, однако на веб-сайте есть некоторые перенаправления на внешние сайты.после регистрации заголовка от WebView
я заметил, что в некоторых из этих перенаправлений агент установлен как android
, что вызывает некоторые проблемы с макетом и поведением веб-сайта.
Журнал заголовка запроса WebView:
request.getRequestHeaders()::{Origin=null, User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, Upgrade-Insecure-Requests=1, Content-Type=application/x-www-form-urlencoded}
request.getMethod()::POST
request.getUrl()::https://www.example.com/tt.jsp
request.getRequestHeaders()::{Origin=https://www.example.com, User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Referer=https://www.example.com/tt.jsp, Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, Upgrade-Insecure-Requests=1, Content-Type=application/x-www-form-urlencoded}
request.getMethod()::POST
request.getUrl()::https://www.example2.com/tt2.do
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (Linux; Android 8.0.0; SM-G955F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=image/webp,image/apng,image/*,*/*;q=0.8, Referer=https://www.example.com/tt.jsp}
request.getMethod()::GET
request.getUrl()::https://www.example.com/favicon.ico
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=*/*, Referer=https://www.example2.com/}
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/css,*/*;q=0.1, Referer=https://www.example2.com/}
request.getMethod()::GET
request.getRequestHeaders()::{User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36, Accept=text/css,*/*;q=0.1, Referer=https://www.example2.com/}
request.getUrl()::https://www.example2.com/css.css
Как я могу убедиться, что агент Webview не показывает Android
как ОС в User-Agent
?как вы можете видеть в одном из перенаправлений, показанных в журналах, он показывает android
как user-agent
OS
ОБНОВЛЕНИЕ: Я пытался использовать webView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36");
все еще дает тот же результат, как показано вжурналы выше.(строка журнала 7)