2012-07-23 69 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(); 
}