Android WebView 在旧的 api 上同步 cookie
Android WebView sync cookies on older apis
我正在使用 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 提示。
基于 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 view, String url) 中调用此方法
这段代码看起来很干净,你不会看到你的方法看起来像被弃用了。
我正在使用 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 提示。
基于 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 view, String url) 中调用此方法 这段代码看起来很干净,你不会看到你的方法看起来像被弃用了。