Я делаю приложение Blackberry, используя RIM JRE 6. При первом создании BrowserField создается файл cookie. В определенный момент (в зависимости от ввода пользователя) куки должны быть удалены. Для этого я открываю BrowserField и пытаюсь удалить файлы cookie, хранящиеся в BrowserField. В настоящее время нет никаких известных мне методов, предоставляемых в API RIM, для явного удаления файлов 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);
}
};
Возможно, это проблема с многопоточностью, но я не уверен, как это исправить. Так что любая помощь приветствуется.
Спасибо.