2013-04-19 4 views
10

cookiemanager에서 쿠키를 설정하려고하면 내 프로그램이 자동으로 충돌합니다 (강제 닫기 팝업 없음). 내가 메시지 전에 로그 즉 http://textuploader.com/?p=6&id=gPpJ치명적인 신호를 일으키는 쿠키 관리자 11

그것은 (오른쪽 CookieManager에 이기에, setcookie() 라인에 실패 여기

mHttpClient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false); 
HttpGet http_get = new HttpGet(url); 
HttpResponse response = mHttpClient.execute(http_get); 

for(Cookie cookie : mHttpClient.getCookieStore().getCookies()) { 

    Log.d(AppPreferences.TESTTAG,"cookie = " + cookie.getName()); 
    if(cookie.getName().equals("SACSID") || cookie.getName().equals("ACSID")) 
    { 
     response.getEntity().consumeContent(); 
     String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain(); 
     CookieManager.getInstance().setCookie(cookie.getDomain(), cookieString); //**crashes here** 
     return true; 
    }     
} 

내가 로그 캣 여기

04-19 22:51:35.277: W/dalvikvm(16704): Invalid indirect reference 0x414bb040 in decodeIndirectRef 
04-19 22:51:35.277: E/dalvikvm(16704): VM aborting 
04-19 22:51:35.281: A/libc(16704): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 16754 (AsyncTask #1) 

에서지고있어 모두 삭제 표시 로그를 생성하는 것입니다 그 라인 이후에는 이전 메시지를 출력하지만 이후에는 출력하지 않습니다.

누구나이 문제를 해결할 수 있습니까?

답변

25

CookieManager를 호출하기 전에 CookieSyncManager.createInstance(context);을 추가하십시오.

+1

이 하나가 저에게 효과적입니다. –

+0

이 앱이 없으면 Jellybean에서 충돌이 발생했습니다. – Fouad

0

위의 코드로 인해이 크래시가 발생했다는 것이 확실하다면 이는 펌웨어 버그를 나타냅니다. Android SDK 앱이 SIGSEGV를 트리거 할 수있는 방법은 없습니다.

Nexus 기기, 에뮬레이터 또는 여러 기기에서 발생하는 경우 Android 버그 일 가능성이 큽니다. http://b.android.com에 문제를 제기하고 (이미없는 것으로 보이는 경우)이 문제를 지적하고 해당 삭제 표시 로그를 첨부하는 것이 좋습니다.

이것은 특정 설정 (예 : 하나의 장치, 하나의 ROM 모드)에서만 발생하고 다른 장치에서는 발생하지 않는 경우 해당 환경에 고유 한 것일 수 있습니다.이 경우 장치 또는 ROM 모드에서 도움을 요청해야합니다 만드는 사람.

그 이상으로, cookie.getDomain()이 커프스와 같이 유효한 값을 반환하는지 확인하십시오.이 값은 가장 가능성이 높은 범인과 같습니다.

1

onCreate() 메서드에서 WebView를 만들어 파괴하십시오. WebView는 ContentManager와 WebKit 사이에 "다리"를 만듭니다. 다음과 같은 몇 가지 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_layout); 
    WebView web = new WebView(this); 
    web.destroy(); 
}