Java 旧API上的Android WebView同步cookie

Java 旧API上的Android WebView同步cookie,java,android,cookies,android-webview,Java,Android,Cookies,Android Webview,我正在使用CookieSyncManager同步cookies。我跟着导游走。在oncreate中创建实例,在onPause中停止同步,在onResume中恢复。另外我开枪了 CookieSyncManager.getInstance().sync(); 在onPageFinished的末尾 因为API21我得到了一个弃用的警告,根据Android文档,我们应该使用 CookieManager.getInstance().flush(); 只有现在才能启动同步 我已经试过了 if (andr

我正在使用CookieSyncManager同步cookies。我跟着导游走。在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呢

编辑: 根据评论(不确定我是否理解正确):


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

基于Selvin的评论:

@Override
public void onPageFinished(WebView view, String url) {

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

@TargetApi(21)
private void flushCookies() {

  CookieManager.getInstance().flush();
}

成功了。再次感谢您。

实际上,您可以通过不同的方式来完成:

@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视图,字符串url)中调用此方法
这段代码看起来非常干净,您不会看到您的方法看起来像是弃用的。

2个选项:第一:不关心弃用,使用旧的,第二:
如果(getDeviceAPI()>=21){use\u new\u API}或者{use\u old\u API}
。。。对不起,我已经试过了。忘记提及并添加到问题中。啊,验证错误。。。然后移动
CookieSyncManager.getInstance().sync()
CookieManager.getInstance().flush()到2个不同的方法。。。然后调用这些方法。。。dalvik在方法级别上验证类(在API>4中…在API 4中,在类级别上…)不确定我是否理解您,但请参见编辑。相同错误:调用需要API21。无论是A版还是B版,不,不
if(android.os.Build.VERSION.SDK_INT>=21)flushCookies()else syncCookies()
edit:版本A应该可以工作。。。edit2这不是一个错误。。。这是皮棉的暗示。。。将注释添加到flushCookies
@TargetApi(21)
以除去它
@SuppressWarnings("deprecation")
public static void loadCookies() {

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