2012-07-23 40 views
4

我的應用程序開始得到了很多CookieSyncManager例外最近:CookieSyncManager :: createInstance()IllegalStateException?

java.lang.IllegalStateException: CookieSyncManager::createInstance() 
    needs to be called before CookieSyncManager::getInstance() 
at android.webkit.CookieSyncManager.getInstance(CookieSyncManager.java:81) 
at android.webkit.CookieManager$2.run(CookieManager.java:532) 
at java.lang.Thread.run(Thread.java:1096) 

的錯誤是從堆棧跟蹤明確的,但在那裏的源自不是(這是從Play商店報告)。附着在堆棧跟蹤用戶的消息表明,它的周圍發生的一切,我使用Facebook SDK的地方,它使用CookieSyncManager:

// From Facebook.java 
private void startDialogAuth(Activity activity, String[] permissions) { 
    ... 
    CookieSyncManager.createInstance(activity); // <-- here 
    dialog(activity, LOGIN, params, new DialogListener() { 
     public void onComplete(Bundle values) { 
      CookieSyncManager.getInstance().sync(); // <-- here 
      ... 

https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/android/Facebook.java#L342

這看起來不錯給我,但有上述用法有什麼不妥?我無法在我的任何測試設備上重現錯誤,或許存在實施差異?

感謝

回答

1

應該是這樣的異常說:

public void onComplete(Bundle values) { 
    CookieSyncManager.createInstance(activity); // <-- this line was missing 
    CookieSyncManager.getInstance().sync(); 
    ... 
0

按照Android的文件

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    CookieSyncManager.createInstance(MainActivity.this); 
    CookieSyncManager.getInstance().startSync(); 
} 
public void onReume(){ 
    super.onResume(); 
    CookieSyncManager.getInstance().stopSync(); 
} 
public void onPause(){ 
    super.onPause(); 
    CookieSyncManager.getInstance().sync(); 
} 
相關問題