CookieManager и CookieSyncManager не синхронизируют файлы cookie с веб-просмотром в ICS (работает на всех предыдущих уровнях API) - PullRequest
17 голосов
/ 14 марта 2012

Справочная информация:

Я получаю файлы cookie через свое приложение и использую их для внутреннего пользования, отправляя запросы на http. Пользователи могут переключиться на веб-просмотр в любой момент времени, и в этом случае я синхронизирую / вставляю куки-файлы в webView .

Код для синхронизации файлов cookie с веб-просмотром с использованием CookieSyncManager :

CookieSyncManager.createInstance(a);
CookieManager cm = CookieManager.getInstance();
cm.setCookie(domain, cookieName + "=" + cookieValue);
CookieSyncManager.getInstance().sync();

Это работает на всех уровнях API , за исключением API 15+ (Android 4.0, Ice Cream Sandwich). API CookieManager не считается устаревшим.

В чем причина этой проблемы и есть ли обходные пути?

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

У меня недавно была та же самая проблема, которую я обнаружил, была моей ошибкой.Проблема была в том, как я установил домен (но он работал до API 15).Попробуйте поставить домен перед точкой: «.company.com» вместо «company.com».

3 голосов
/ 22 марта 2012

Вы можете попробовать Apache DefaultHttpClient, чтобы выполнить эту работу за вас, я не думаю, что она была изменена в Ice Cream Sandwich.

Я нашел этот образец , но здесь есть еще много

0 голосов
/ 14 марта 2014

Вот ваш ответ: В микросхемах нельзя получить cookie

Домен, вызывающий проблему.

для всех версий после 15+ вы должны использовать **. ** domain.com, а не domain.com.

0 голосов
/ 02 августа 2013

Я не вводил cookie от клиента, но нашел ICS печенье не сохранялось.

Один обходной путь использовать локальное хранилище вместо куки. Вам не нужен менеджер синхронизации cookie. это работает на ics и v2 + android.

В моем случае у меня не было домена, поэтому вышеприведенное не имело значения - Я использовал локальный HTML-файл в папке активов приложения.

это работает на ics и v2 android

наслаждаться

Java

// java
WebSettings webSettings = myWebView.getSettings();
webSettings.setDomStorageEnabled(true);   // localStorage


// e.g., if your package is www.myapp.whatever;
webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/");

HTML

// javascript

function createCookie(name,value,days,path) {
    localStorage.setItem(name,value);
}

function readCookie(name) {
    return localStorage.getItem(name);
}
...