Можно ли изменить пользовательский агент в Crosswalk Android/Tizen-Apps?

Я разрабатываю приложение для Android/tizen, используя проект пешеходного перехода. Теперь мне нужно изменить пользовательский агент для просмотра страницы в настольной версии. Можно ли изменить пользовательский агент и как? Благодарю вас!


person Jonson    schedule 22.09.2014    source источник


Ответы (5)


Используйте этот фрагмент:

XWalkView mXWalkView;
mXWalkView.getSettings().setUserAgentString("Your User Agent");
person Farhad Ahmadi    schedule 04.10.2014
comment
Пожалуйста, добавьте некоторое объяснение того, что делает ваш код и как он работает, чтобы новички, такие как OP, могли учиться на ответе. - person i alarmed alien; 04.10.2014
comment
Не решил мою настоящую проблему, но сервер распознает новый пользовательский агент. Спасибо! :) - person Jonson; 06.10.2014


В документации ничего об этом нет. Вероятно, единственный способ - использовать 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
comment
Это работает, но замедляет работу и время загрузки. Это очень интересный ответ, я многому научился. Спасибо! - person Jonson; 06.10.2014
comment
Решение может быть использовано только для первого URL-адреса (скил для загрузки других ресурсов, изображений и т. д.). - person Kenumir; 07.10.2014

Новый API для установки пользовательского агента находится в стадии разработки и будет выпущен в Crosswalk-12 примерно в конце января следующего года.

Это будет выглядеть так: xwalkView.setUserAgentString(newUserAgentString);

person lincsoon    schedule 12.12.2014
comment
Источник: 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
comment
Благодарю вас. До сих пор я использую Crosswalk 8, но это интересная информация! - person Jonson; 04.12.2014