Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк с cookies в WebView под 2.3, выборочная (?) обработка 
:(
    Опции темы
N0dwis
Дата 11.11.2015, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 18.9.2007
Где: Луганск

Репутация: нет
Всего: 4



Столкнулся с такой проблемой — компонент как-то странно работает с куками под Android 2.3. Как будто он их выборочно игнорирует.
Из-за этого невозможно авторизоваться на сайте — авторизация проходит, но, поскольку куки нет, при загрузке любой страницы происходит редирект на страницу логина.

Причём на 4-м Android-е всё работает отлично.

В коде ничего хитрого нет.
Код

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.program_view);
        web = (WebView) findViewById(R.id.webView);
        web.getSettings().setJavaScriptEnabled(true);
        CookieManager.getInstance().setAcceptCookie(true);

        web.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                if (url.contains("/login")) {
                    CookieSyncManager.createInstance(web.getContext());
                    CookieManager cookieManager = CookieManager.getInstance();
                    cookieManager.setCookie(serverUrl, AUTHORIZE_COOKIE_NAME + "=; path=/; secure");
                    CookieSyncManager.getInstance().sync();
                }
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                saveProgramToken();
            }

            private String readCookies() {
                CookieSyncManager.createInstance(web.getContext());
                CookieSyncManager.getInstance().sync();
                return CookieManager.getInstance().getCookie(serverUrl);
            }
        });
        String token = readProgramToken();
        if (token != null) {
            CookieSyncManager.createInstance(web.getContext());
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.setCookie(serverUrl, AUTHORIZE_COOKIE_NAME + "=" + token + "; path=/; secure");
            cookieManager.setCookie(serverUrl, USER_COOKIE_NAME + "=" + getDeviceId() + "; path=/; secure");
            CookieSyncManager.getInstance().sync();
        }

        web.loadUrl(serverUrl);
    }


Даже без обработки событий onPageStarted/onPageFinished авторизация проходит не всегда. Как правило, срабатывает с первого раза, после очистки всех данных приложения.

Буду благодарен за любые подсказки. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.