Я делаю приложение Blackberry с помощью RIM JRE 6. При создании браузера впервые создается файл cookie. В определенный момент (в зависимости от пользовательского ввода) файл cookie должен быть удален. Для этого я открываю BrowserField, и я пытаюсь удалить файлы cookie, хранящиеся в BrowserField. В настоящее время нет методов, которые мне известны в RIM api, чтобы явно удалять файлы cookie для BrowserField, поэтому я использую метод executeScript, заданный в классе BrowserField, чтобы выполнить некоторый javascript для удаления файлов cookie. Javascript выполняется в методе onUiEngineAttached перед запуском метода requestContent. Но это приводит к сбою этого приложения с IllegalStateException и сообщение:Удаление браузера браузера
Невозможно выполнить сценарий - сценарий двигателя не существует
Я не считаю, что это является результатом JavaScript не инициализируется поскольку он должен быть включен по умолчанию из класса BrowserFieldConfig. Я не уверен, правильно ли я форматировал свой 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);
}
};
Это могло быть проблемой потоковая, но я не уверен, как это исправить. Поэтому любая помощь приветствуется.
спасибо.
Спасибо за помощь снова Эрик:). Установка cookie как null просто приводит к тому, что исключение NullPointerException при установке значения в значение «" просто приводит к созданию нового файла cookie, не создаваемого над другими. Установка cookie с помощью setCookie (url, "testCookie = 123; expires = Thu, 01-Jan-70 00:00:01 GMT;"); ничего не делает для состояния файлов cookie в браузере. Я не уверен, как можно настроить пользовательский менеджер файлов cookie, поскольку BrowserFieldConfig только, кажется, принимает предварительно сконфигурированные менеджеры файлов cookie. –