Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo obtener 'BadTokenException: No se puede agregar ventana' al intentar mostrar el diálogo de Facebook – Android

Estoy recibiendo una Excepción de Token Malo al intentar mostrar el diálogo publicar en la pared desde el SDK de Facebook (Sucede cada 2 veces que ejecuto la aplicación).

Tengo un botón 'publicar', y su trabajo es mostrar el diálogo si el usuario está conectado a su cuenta FB, o mostrar el cuadro de diálogo de inicio de sesión (y luego mostrar inmediatamente el cuadro de diálogo 'publicar en la pared') si el usuario no está ' T inició sesión en su cuenta.

Aquí está el oyente de clic del botón Publicar –

mPostButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { if(mLoginButton.getVisibility() == 0) postOnWall(); else mLoginButton.performClick(); } }); 

Aquí está el oyente onAuthSucceed ()

 public void onAuthSucceed() { postOnWall(); } 

Aquí está la función PostOnWall (que muestra el diálogo de publicación)

  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()); } 

Aquí está el registro del error –

  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) 

He buscado por todas partes y no puedo encontrar una solución.

EDITAR – Esto sólo ocurre cuando el usuario no está conectado. En ese caso, presiona el botón 'publicar', inicia sesión y luego se llama a la función 'postOnWall', lo que genera el error. Estoy trabajando en él por 2 días ahora, y no pude encontrar nada al respecto.

¡Gracias!

  • Problema con la solicitud de Facebook en Android
  • ¿Cómo integrar Google Plus y Facebook Authentication juntos en la misma actividad del proyecto Android?
  • Recuperar foto de perfil con Facebook SDK 3.0 para Android
  • Compartir imagen no funciona en viber y facebook
  • Android: ¿Cuál es la clase de diálogo compartido en Facebook SDK 4.x
  • Autoridad del proveedor de contenido de Android Facebook
  • LoginButton pidiendo permiso de lista de amigos, ¿por qué?
  • Facebook Unity SDK en Android - Login falla cuando la aplicación FB instalada
  • 4 Solutions collect form web for “Cómo obtener 'BadTokenException: No se puede agregar ventana' al intentar mostrar el diálogo de Facebook – Android”

     @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.d("Facebook-WebView", "Webview loading URL: " + url); super.onPageStarted(view, url, favicon); if(FbDialog.this.isShowing()) mSpinner.show(); } 

    Y por supuesto hay el caso donde el código tal como

     View view = getLocalActivityManager().startActivity(id, intent).getDecorView(); setContentView(view); 

    Se ejecuta dentro de una clase derivada de ActivityGroup, como en el caso de cambiar entre muchas actividades bajo una sola pestaña de una actividad tabulada. Asegúrese de que el 'esto' en

     AlertDialog.Builder builder = new AlertDialog.Builder(WhateverActivity.this); 

    Es reemplazado por una referencia apropiada al padre de WhateverActivity como

     AlertDialog.Builder builder = new AlertDialog.Builder(ActivityGroupDerivedParentOfWhateverActivity.this); 

    Parece que has proporcionado algún método con un objeto de contexto / actividad que ya no está activo. Probablemente en el método postOnWall. ¿Es this en ese método la actividad actualmente mostrada?

    Frente a la misma cuestión. Por lo que puedo decir, de google, es para hacer con su actividad a veces no estar listo cuando la actividad de inicio de sesión de Facebook devuelve su resultado. ¿Por qué? Ninguna pista.

    Pero creo que esto funcionará mejor: Defina un indicador en su clase, establezca el indicador en AuthListener y muestre la alerta en el indicador onStart si está establecido. Entonces estarás seguramente en la comodidad de tu propia actividad:

     private boolean authSuccess = false; 

     public class SampleAuthListener implements AuthListener { authSuccess = true; 

     protected void onStart() { super.onStart(); if (authSuccess) { alert.show(); } } 

    Exención de responsabilidad: Tengo muy poca experiencia de Java / Android.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.