我在我的应用程序中使用cookie在所有浏览器中都能正常工作,但在Android设备中,cookie设置不如我想要的那么快,需要一些时间才能保存cookie,同样的情况发生在我删除cookie。有什么办法可以让它更好地运作吗?提前感谢您的回答。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = new WebView(this);
webview.getSettings().setJavaScriptEnabled(true); // enable javascript
CookieManager.setAcceptFileSchemeCookies(true);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.acceptCookie();
String cookie = CookieManager.getInstance().getCookie("mylink");
final Activity activity = this;
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
}
});
webview.loadUrl("mylink");
setContentView(webview);
}
答案 0 :(得分:16)
在棒棒糖及其他方面,CookieManager单例本身可以正常工作。 (参考链接 - http://developer.android.com/reference/android/webkit/CookieManager.html) 但是,在Lollipop之前,它还需要使用CookieSyncManager中的其他静态方法。在WebView上设置cookie时,以下代码适用于所有Android版本 -
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(this);
}
cookieManager.setAcceptCookie(true);
答案 1 :(得分:0)
只需启用javascript和Dom存储。这可以帮助我记住我的webview android应用程序中的登录详细信息。我没有使用任何CookieManager,而是启用了此功能。
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
答案 2 :(得分:0)
没什么:“ WebView现在会根据需要自动同步cookie。您不再需要创建或使用CookieSyncManager。”
如DarkKnight所说,您可以测试您的应用程序目标是否低于API 21 Lollipop(5.0),如果不需要,则不再需要CookieSyncManager。