Я разрабатываю приложение для Android/tizen, используя проект пешеходного перехода. Теперь мне нужно изменить пользовательский агент для просмотра страницы в настольной версии. Можно ли изменить пользовательский агент и как? Благодарю вас!
Можно ли изменить пользовательский агент в Crosswalk Android/Tizen-Apps?
Ответы (5)
Используйте этот фрагмент:
XWalkView mXWalkView;
mXWalkView.getSettings().setUserAgentString("Your User Agent");
person
Farhad Ahmadi
schedule
04.10.2014
Пожалуйста, добавьте некоторое объяснение того, что делает ваш код и как он работает, чтобы новички, такие как OP, могли учиться на ответе.
- person i alarmed alien; 04.10.2014
Не решил мою настоящую проблему, но сервер распознает новый пользовательский агент. Спасибо! :)
- person Jonson; 06.10.2014
Я использовал отражение, чтобы решить эту проблему, пока этот API снова не станет общедоступным в Crosswalk 12. Это работает в Crosswalk 9.38.208.10.
private void setWebViewUserAgent(XWalkView webView, String userAgent)
{
try
{
Method ___getBridge = XWalkView.class.getDeclaredMethod("getBridge");
___getBridge.setAccessible(true);
XWalkViewBridge xWalkViewBridge = null;
xWalkViewBridge = (XWalkViewBridge)___getBridge.invoke(webView);
XWalkSettings xWalkSettings = xWalkViewBridge.getSettings();
xWalkSettings.setUserAgentString(userAgent);
}
catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e)
{
// Could not set user agent
e.printStackTrace();
}
}
person
cprcrack
schedule
17.12.2014
Эй, кажется,
getSettings
больше не доступен. Есть ли другие способы сделать это?
- person tehmaestro; 27.09.2015
В документации ничего об этом нет. Вероятно, единственный способ - использовать setResourceClient и WebResourceResponse для изменения пользовательского агента. Пример использования:
setResourceClient(new XWalkResourceClient(this) {
@Override
public WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) {
try {
URL u = new URL(url);
HttpURLConnection c = (HttpURLConnection) u.openConnection(Proxy.NO_PROXY);
c.setRequestProperty("User-agent", "test user agent");
return new WebResourceResponse(null, "utf-8", c.getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return super.shouldInterceptLoadRequest(view, url);
}
});
person
Kenumir
schedule
27.09.2014
Это работает, но замедляет работу и время загрузки. Это очень интересный ответ, я многому научился. Спасибо!
- person Jonson; 06.10.2014
Решение может быть использовано только для первого URL-адреса (скил для загрузки других ресурсов, изображений и т. д.).
- person Kenumir; 07.10.2014
Новый API для установки пользовательского агента находится в стадии разработки и будет выпущен в Crosswalk-12 примерно в конце января следующего года.
Это будет выглядеть так: xwalkView.setUserAgentString(newUserAgentString);
person
lincsoon
schedule
12.12.2014
Источник: mail-archive.com/crosswalk- [email protected]/
- person cprcrack; 17.12.2014
Это для веб-приложений, в которых вы можете изменять JS-файлы.:
Я использую этот обходной путь, он также работает с Crosswalk 9.
xview.addJavascriptInterface(new Object(){
@JavascriptInterface
public String getNewUserAgent(){
return "My User Agent";
}
}, "NativeInterface");
И в моем веб-приложении я просто звоню:
navigator.ua = NativeInterface.getNewUserAgent();
person
Ostkontentitan
schedule
03.12.2014
Благодарю вас. До сих пор я использую Crosswalk 8, но это интересная информация!
- person Jonson; 04.12.2014