java - Android WebView 在旧版 api 上同步 cookie

标签 java android cookies android-webview

我正在使用 CookieSyncManager 来同步 cookie。我按照 Android Documentation 的指南进行操作。在 oncreate 中创建实例,在 onPause 中停止同步,在 onResume 中恢复。另外我开火

CookieSyncManager.getInstance().sync();

在 onPageFinished 的末尾。

自 API21 以来,我收到了已弃用的警告,根据 Android 文档,我们应该使用

CookieManager.getInstance().flush();

现在才触发同步。

我已经尝试过了

if (android.os.Build.VERSION.SDK_INT >= 21) CookieManager.getInstance().flush();
else CookieSyncManager.getInstance().sync();

但它给了我一个错误,即 API15 为最小值。

我不喜欢忽略弃用的想法,但如何处理 API15?

编辑:

来自评论(不确定我是否理解正确):

@Override
public void onPageFinished(WebView view, String url) {
  
  if (android.os.Build.VERSION.SDK_INT >= 21) flushCookies();
  else syncCookies();
}

@TargetApi(21) //add this
private void flushCookies() {

  CookieManager.getInstance().flush();
}

private void syncCookies() {

  CookieSyncManager.getInstance().sync();
}

解决了我认为这是一个错误的 lint 提示。

最佳答案

实际上你可以通过不同的方式做到这一点:

@SuppressWarnings("deprecation")
public static void loadCookies() {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        CookieManager.getInstance().flush();
    } else {
        CookieSyncManager.getInstance().sync();
    }
}

在 onPageFinished(WebView view, String url) 中调用此方法 这段代码看起来很干净,您不会看到您的方法看起来像已弃用。

关于java - Android WebView 在旧版 api 上同步 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983300/

相关文章:

java - Eclipse Neon eGit 集成提供异常 401 需要授权

java - 动态插件架构。从 Spring boot 应用程序的目录加载 jar 文件

android - 如何使用 KITKAT 4.4.2 版本避免 SD 卡上的 "EACCES permission denied"。谷歌的新政策

cookies - 使用 Jest 测试安全 cookie 值

javascript - DNI 根据登陆页面显示 div,在整个 session 中继续显示 div

java - 什么是属性文件?它包含什么?

java - 以字符串形式获取子节点

android - 在 Android 中调用 invalidateOptionsMenu() 时会发生什么?

c# - Android View 状态 : pressed, 已激活、已选择等绑定(bind)。我必须编写自定义绑定(bind)吗?

asp.net-mvc - JWT token 身份验证 - 以正确的方式进行