Файлы cookie сеансов Cordova не работают на Android Lollipop

Я разрабатываю приложение Cordova/Phonegap для Android, которое использует файлы cookie сеансов для входа на сторонние веб-сайты. Для этого я делаю запрос на отправку AJAX (с jQuery), а затем файлы cookie устанавливаются автоматически.

Но когда я обновил свой смартфон до Android Lollipop 5.0, а также библиотеки приложений до уровня API 21, файлы cookie перестали работать. Что изменилось?

Ответ 1

После нескольких часов работы в Интернете для рабочего решения я наткнулся на статью, которая объясняет проблему очень хорошо, поэтому я размещаю ее здесь, потому что я думал, что она будет полезна другим пользователям.

В основном проблема заключается в новой политике cookie сторонних разработчиков Android (https://developer.android.com/about/versions/android-5.0-changes.html#BehaviorWebView), которая по умолчанию блокирует их.

Решения заключаются в добавлении нескольких строк кода в основное действие:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    super.init();

    // Allow third party cookies for Android Lollipop
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        WebView webView = (WebView)super.appView;
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptThirdPartyCookies(webView,true);
    }

    super.loadUrl(Config.getStartUrl());
}

Для получения дополнительной информации я поместил ссылку на полную статью здесь: http://joashpereira.com/blog/2014/11/19/fix-to-cordovaphonegap-apps-targeting-android-5-lollipop-or-later-on-default-disallowing-third-party-cookies/