Удаление файлов BrowserField - PullRequest
2 голосов
/ 27 января 2011

Я делаю приложение 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);
    }
};

Возможно, это проблема с многопоточностью, но я не уверен, как это исправить. Так что любая помощь приветствуется.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 23 мая 2011

Ну, я не могу помочь вам с BrowserFieldCookieManager, но вот очень полезный веб-сайт, который помог мне начать работу и предоставил скрипты, которые я использовал для управления файлами cookie (если ничего другого, это должно дать вам представление о том, что BrowserFieldCookieManager делает за кулисами и какчтобы заставить его делать то, что вы хотите).

http://www.quirksmode.org/js/cookies.html

Особо посмотрите, как он удаляет куки, заменив их пустыми куки, срок действия которых истекает мгновенно.

0 голосов
/ 25 мая 2013

Другой способ вообще не использовать куки, если вы этого хотите, - использовать это свойство внутри BrowserFieldConfig.

BrowserFieldConfig config = new BrowserFieldConfig();  
config.setProperty(BrowserFieldConfig.ENABLE_COOKIES, Boolean.FALSE);
0 голосов
/ 27 января 2011

Я еще не использовал интерфейс BrowserFieldCookieManager, но вы пытались вызвать setCookie (url, null) или setCookie (url, "") в диспетчере файлов cookie, чтобы очистить файл cookie? Я понимаю, что документы по API в этой области редки. Если ни один из них не работает, попробуйте заменить файл cookie тем, время которого уже истекло.

Другой альтернативой является замена собственного менеджера файлов cookie при создании экземпляра BrowserField. См. Документы для BrowserFieldConfig:

http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/browser/field2/BrowserFieldConfig.html

...