Подтвердить что ты не робот

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

Фон:

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

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

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

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

Что вызывает эту проблему и есть ли какие-либо обходные пути?

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

Одна работа вокруг для использования локального хранилища вместо файлов cookie. Вам не нужен менеджер синхронизации файлов 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);
}

Ответ 4

Вот ваш ответ: В микросхемах не может быть cookie

Это домен, который вызывает проблему.

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