我正在使用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提示我认为这是一个错误。
答案 0 :(得分:2)
实际上你可以通过不同的方式来做到这一点:
@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视图,String url) 这段代码看起来很干净,你不会看到你的方法看起来像是弃用了。
答案 1 :(得分:0)
根据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();
}
做了这个伎俩。再次感谢你。