2013-02-21 3 views
0

최소 필수 API가있는 Android 앱을 만들었습니다. 8. 사용자가 백엔드에서 쿠키로 인증되었습니다. 이것은 API 레벨이 9 이상인 모든 기기에서 작동합니다. 쿠키는 CookieManager에 저장됩니다 :Android 2.2의 쿠키는 WebView에서 사용할 수 없습니다.

public static boolean hasCookie(){ 
    CookieManager cManager = CookieManager.getInstance(); 
    String cookieString = cManager.getCookie(".xxxxxxx.xx"); 
    if(cookieString != null && cookieString.contains("MobileGuid")){ 
     return true; 
    } 
    return false; 
} 

이 항상 true를 반환하지만, 쿠키가 안드로이드이 경우 웹보기에서 바로 할 수 있습니다 : 쿠키 CookieManager에로도 사용할 수있는 경우

CookieManager cManager = CookieManager.getInstance(); 
CookieSyncManager.createInstance(LauncherApplication.getAppContext()); 
cManager.setAcceptCookie(true); 
cManager.setCookie(".xxxxxxxx.xx", "MobileGuid=" + guid); 
CookieSyncManager.getInstance().sync(); 

내가 확인 버전은 2.2 이상입니다. 당신이 cManager.setCookie()를 호출 할 때

String databasePath = LauncherApplication.getAppContext().getApplicationContext().getDir("database", 
      Context.MODE_PRIVATE).getPath(); 

    WebSettings mainWebSettings = mainWebView.getSettings(); 
    mainWebSettings.setJavaScriptEnabled(true); 
    mainWebSettings.setAppCacheEnabled(true); 
    mainWebSettings.setDatabaseEnabled(true); 
    mainWebSettings.setDomStorageEnabled(true); 
    mainWebSettings.setDatabasePath(databasePath); 

답변

1

,

cManager.setCookie("a.xxxxxxxx.xx", "MobileGuid=" + guid + "; domain=xxxxxxx.xx"); 

그래서 내가 "는 추가 한 통과하려고 :

내 웹보기의 구성은 다음과 같다 (나는은 phpinfo 이것을 확인) a "를 첫 번째 매개 변수 (문자 'a')에 추가하고 "domain=xxxxxxx.xx"을 쿠키 자체에 추가했습니다.

작성된 코드가 모두 정확하고 API 14 장치가 쿠키를 보내지 않는 API 9 장치와 비슷한 고충을 겪었습니다. 왜 그것이 작동하는지 정확히 알지는 못 하겠지만, 그것은 나를 도왔던 유일한 것입니다.

0

Hylianpuffball의 대답과 마찬가지로 아이디어는 도메인 이름 아래에 문자를 추가하는 것입니다. 나는 CookieManager가 .domain.com과 같은 것을 찾고 있으며 도메인 이름을 얻기 위해 서브 문자열의 종류가 수행되었다고 생각한다.

점이나 문자를 추가하면 작동합니다.

관련 문제