当我尝试从Facebook SDK显示发布到墙上的对话框时,会出现“Bad Token Exception”(每运行2次应用程序就会出现此问题)。
我有一个“发布”按钮,它的作用是如果用户已登录FB帐户,则显示对话框,或者如果用户未登录帐户,则显示登录对话框(然后立即显示“发布到墙上”对话框)。
这是发布按钮的单击侦听器 -
mPostButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(mLoginButton.getVisibility() == 0)
postOnWall();
else
mLoginButton.performClick();
}
});
以下是onAuthSucceed()监听器 -
public void onAuthSucceed() {
postOnWall();
}
这里是PostOnWall函数(它显示发布对话框) -
public void postOnWall()
{
Bundle params = new Bundle();
params.putString("name", FBname);
params.putString("link", FBlink);
params.putString("description", FBdescription);
params.putString("picture", FBpicture);
con = this;
mFacebook.dialog(con, "feed", params, new SampleDialogListener());
}
以下是错误日志记录 -
05-05 16:25:09.601: WARN/WindowManager(109): Attempted to add application window with unknown token HistoryRecord{405416b0 android.alco/.do_drive}. Aborting.
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@405db9f8 is not valid; is your activity running?
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.view.ViewRoot.setView(ViewRoot.java:527)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.app.Dialog.show(Dialog.java:241)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at com.facebook.android.Facebook.dialog(Facebook.java:622)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.alco.do_drive.postOnWall(do_drive.java:258)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.alco.do_drive$SampleAuthListener.onAuthSucceed(do_drive.java:172)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.alco.SessionEvents.onLoginSuccess(SessionEvents.java:78)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at android.alco.LoginButton$LoginDialogListener.onComplete(LoginButton.java:100)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at com.facebook.android.Facebook$1.onComplete(Facebook.java:308)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:133)
我已经找了很久,但是找不到解决办法。
编辑 - 当用户没有登录时才会出现这种情况。在这种情况下,他按下“发布”按钮,然后登录,然后调用“postOnWall”函数,该函数生成错误。我已经花了2天时间研究它,但仍然找不到任何有关它的信息。
谢谢!
BadTokenException
几乎总是与您传递的Context
有关。您的this
指针是什么? - Brian Dupuis