2011-01-26 3 views
2

RIM JRE 6을 사용하여 Blackberry 응용 프로그램을 만들고 있습니다. 처음으로 BrowserField를 만들면 쿠키가 만들어집니다. 사용자 입력에 따라 특정 순간에 쿠키를 삭제해야합니다. 이렇게하려면 BrowserField를 열고 있는데 BrowserField에 저장된 쿠키를 삭제하려고합니다. 현재, BrowserField 클래스에 명시된 executeScript 메소드를 사용하여 JavaScript를 실행하여 쿠키를 제거하기 위해 RIM API에서 BrowserField에 대한 쿠키를 명시 적으로 삭제하는 방법은 없습니다. javascript는 requestContent 메소드를 실행하기 전에 onUiEngineAttached 메소드에서 실행됩니다. 스크립트 엔진이BrowserField 쿠키 삭제

내가이로 초기화되지 않는 자바 스크립트의 결과입니다 믿지 않는 존재하지 않는 -

실행할 수 없습니다 스크립트 :하지만이는 IllegalStateException이와 메시지와 함께 충돌 응용 프로그램 결과 기본적으로 BrowserFieldConfig 클래스에서 켜져 있어야하기 때문입니다. 내 자바 스크립트를 올바르게 포맷하고 있는지 확실하지 않습니다. 이것은 내가 사용하고있는 코드입니다.

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); 
    } 
}; 

아마도 스레드 문제 일 수 있지만이를 해결하는 방법은 확실하지 않습니다. 그래서 어떤 도움을 주셔서 감사합니다.

감사합니다.

답변

0

아직 BrowserFieldCookieManager 인터페이스를 사용하지 않았지만 쿠키를 지우려면 setCookie (url, null) 또는 setCookie (url, "")를 쿠키 관리자에서 호출 해 보았습니까? API 문서가이 분야에서 드문 드문다는 것을 알고 있습니다. 쿠키가 작동하지 않으면 쿠키가 이미 만료 된 것으로 교체하십시오.

다른 대안은 BrowserField 인스턴스를 만들 때 자신의 쿠키 관리자로 대체하는 것입니다.

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

+0

도움을 다시 요청하십시오. Eric :). 쿠키를 null로 설정하면 값을 ""로 설정하는 동안 NullPointerException이 throw되어 결과적으로 값의 새 쿠키가 다른 쿠키의 위에 만들어집니다. setCookie (url, "testCookie = 123; expires = Thu, 01-Jan-70 00:00:01 GMT;")로 쿠키 설정하기; 브라우저의 쿠키 상태에는 아무런 영향을주지 않습니다. BrowserFieldConfig는 사전 구성된 쿠키 관리자 만 받아들이는 것처럼 보이기 때문에 사용자 지정 쿠키 관리자를 설정하는 것이 가능한지 잘 모르겠습니다. –

0

그럼 내가 BrowserFieldCookieManager와 함께 당신을 도울 수 있지만 여기가 제공해야합니다 아무것도 경우 (내가 시작했고 내가 쿠키 관리에 사용했던 스크립트를 제공 매우 도움이 웹 사이트는 다음과 같습니다 BrowserFieldConfig의 문서를 참조하십시오 BrowserFieldCookieManager가 백그라운드에서하고있는 일과 원하는 작업을 수행하는 방법에 대해 생각해보십시오. 그것은 즉시 만료 빈 쿠키로 대체함으로써, 쿠키를 삭제하는 방법을

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

특히 봐.

0

쿠키를 전혀 사용하지 않는 또 다른 방법은 귀하의 의도 인 경우이 속성을 BrowserFieldConfig 안에 사용하는 것입니다.

BrowserFieldConfig config = new BrowserFieldConfig(); 
config.setProperty(BrowserFieldConfig.ENABLE_COOKIES, Boolean.FALSE);