java BrowserField Cookie删除
我正在使用RIM JRE 6制作一个黑莓应用程序。首次创建BrowserField时,将创建cookie。在特定时刻(取决于用户输入),必须删除cookie。为此,我打开一个BrowserField,并尝试删除BrowserField中存储的Cookie。目前,据我所知,RIM api中没有提供显式删除BrowserField Cookie的方法,因此我使用BrowserField类中给出的executeScript方法来执行一些javascript来删除Cookie。javascript在运行requestContent方法之前在OnuineEngineAttached方法中执行。但这会导致应用程序崩溃,并出现IllegalStateException和以下消息:
Unable to execute script - script engine does not exist
我不认为这是javascript没有初始化为on的结果,因为它在BrowserFieldConfig类中默认为on。但我不确定我的javascript格式是否正确。这是我正在使用的代码:
protected void onUiEngineAttached(boolean attached)
{
if(attached)
{
// ... Removed unnecessary code
// Retrieve the cookie manager for the embedded browser
BrowserFieldCookieManager cookieManager = _browserField.getCookieManager ();
if (eraseCookie == true)
{
String temp = cookieManager.getCookie ("someSite");
while (temp.indexOf ("testCookie") != -1)
{
_browserField.executeScript("javascript:document.cookie = \"testCookie=; expires=Thu, 01-Jan-70 00:00:01 GMT\"");
}
}
// Requests browser to go to URL with body and header information
_browserField.requestContent(_url, _body.getBytes(), _header);
}
};
这可能是线程问题,但我不确定如何解决。因此,我们非常感谢您的帮助
多谢各位
# 1 楼答案
另一种根本不使用cookie的方法是在
BrowserFieldConfig
内使用此属性,如果您有意这样做的话# 2 楼答案
我无法帮助你使用BrowserFieldCookieManager,但这是一个非常有用的网站,它让我开始使用并提供了我用于cookie管理的脚本(如果没有其他内容,它应该会让你了解BrowserFieldCookieManager在幕后做什么,以及如何让它做你想做的事情)
http://www.quirksmode.org/js/cookies.html
特别是看看它是如何删除cookies的,用立即过期的空cookies替换它们
# 3 楼答案
到目前为止,我还没有使用BrowserFieldCookieManager接口,但是您是否尝试在cookie管理器上调用setCookie(url,null)或setCookie(url,“”),以清除cookie?我意识到API文档在这一领域非常稀少。如果这两种方法都不起作用,请尝试将cookie替换为已经过期的cookie
另一种选择是在创建BrowserField实例时替换您自己的cookie管理器。请参阅BrowserFieldConfig的文档:
http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/browser/field2/BrowserFieldConfig.html