diff --git a/app/src/main/java/io/legado/app/help/http/CookieStore.kt b/app/src/main/java/io/legado/app/help/http/CookieStore.kt index 097e70598..6abb9fece 100644 --- a/app/src/main/java/io/legado/app/help/http/CookieStore.kt +++ b/app/src/main/java/io/legado/app/help/http/CookieStore.kt @@ -8,6 +8,7 @@ import io.legado.app.data.entities.Cookie import io.legado.app.help.CacheManager import io.legado.app.help.http.api.CookieManager import io.legado.app.utils.NetworkUtils +import io.legado.app.utils.removeCookie object CookieStore : CookieManager { @@ -61,7 +62,7 @@ object CookieStore : CookieManager { val domain = NetworkUtils.getSubDomain(url) appDb.cookieDao.delete(domain) CacheManager.deleteMemory("${domain}_cookie") - android.webkit.CookieManager.getInstance().removeAllCookies(null) + android.webkit.CookieManager.getInstance().removeCookie(domain) } override fun cookieToMap(cookie: String): MutableMap { diff --git a/app/src/main/java/io/legado/app/utils/CookieManagerExtensions.kt b/app/src/main/java/io/legado/app/utils/CookieManagerExtensions.kt new file mode 100644 index 000000000..7b03969b7 --- /dev/null +++ b/app/src/main/java/io/legado/app/utils/CookieManagerExtensions.kt @@ -0,0 +1,22 @@ +package io.legado.app.utils + +import android.webkit.CookieManager + + +@Suppress("unused") +fun CookieManager.removeCookie(domain: String) { + val cm = CookieManager.getInstance() + val urls = arrayOf( + "http://$domain", + "https://$domain" + ) + urls.forEach { url -> + val cookieGlob = cm.getCookie(url) + cookieGlob.split(";").forEach { + val cookieName = it.substringBefore("=") + if (cookieName.isEmpty()) { + cm.setCookie(url, "$cookieName=; Expires=Wed, 31 Dec 2000 23:59:59 GMT") + } + } + } +} \ No newline at end of file