lite gratuito descargar android facebook

android - gratuito - facebook lite apk



No se puede agregar la ventana-token android.os.BinderProxy no es vĂ¡lido; esta corriendo tu actividad? (5)

Intento conectarme a Facebook a través de Facebook API, sigo este ejemplo: https://github.com/facebook/facebook-android-sdk/tree/master/examples/simple

Todo está bien, pero cuando trato de editar algún código, quiero decir que quiero mostrar el mensaje de la entrada de diálogo después de que el inicio de sesión sea exitoso como este:

public void onAuthSucceed() { mText.setText("You have logged in! "); //This is the code to call the post message dialog. mFacebook.dialog(Example.this, "feed",new SampleDialogListener()); }

Recibo este error en el logcat:

03-02 13:32:08.629: E/AndroidRuntime(14991): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@405180f8 is not valid; is your activity running? 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.view.ViewRoot.setView(ViewRoot.java:532) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.view.Window$LocalWindowManager.addView(Window.java:424) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.app.Dialog.show(Dialog.java:241) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.Facebook.dialog(Facebook.java:780) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.Facebook.dialog(Facebook.java:737) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.Example$SampleAuthListener.onAuthSucceed(Example.java:113) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.SessionEvents.onLoginSuccess(SessionEvents.java:78) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.Example$LoginDialogListener.onComplete(Example.java:88) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.Facebook$1.onComplete(Facebook.java:320) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:144) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:218) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:337) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.os.Handler.dispatchMessage(Handler.java:99) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.os.Looper.loop(Looper.java:130) 03-02 13:32:08.629: E/AndroidRuntime(14991): at android.app.ActivityThread.main(ActivityThread.java:3687) 03-02 13:32:08.629: E/AndroidRuntime(14991): at java.lang.reflect.Method.invokeNative(Native Method) 03-02 13:32:08.629: E/AndroidRuntime(14991): at java.lang.reflect.Method.invoke(Method.java:507) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 03-02 13:32:08.629: E/AndroidRuntime(14991): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 03-02 13:32:08.629: E/AndroidRuntime(14991): at dalvik.system.NativeStart.main(Native Method)

¿Alguna idea?


Puedes usar una variable estática dentro de la actividad. Si isActivityLive es verdadero , llama a tu método.

class MyActivity extends Activity { static boolean isActivityLive = false; @Override public void onStart() { super.onStart(); isActivityLive = true; } @Override public void onStop() { super.onStop(); isActivityLive = false; } }


Estaba viendo este error informado de vez en cuando por algunas de mis aplicaciones, y esto es lo que me solucionó:

if(!((Activity) context).isFinishing()) { //show dialog }

Todas las otras respuestas parecen estar haciendo cosas raras como iterar a través de la lista de actividades en ejecución, pero esto es mucho más simple y parece ser el truco.


Esto puede ocurrir cuando se muestra el diálogo para un contexto que ya no existe. Un caso común: si la operación ''mostrar diálogo'' se produce después de una operación asíncrona, y durante esa operación, se destruye la actividad original (que será el elemento principal de su diálogo). Para una buena descripción, mira esta publicación y comentarios en el blog:

http://dimitar.me/android-displaying-dialogs-from-background-threads/

Desde el seguimiento de la pila anterior, parece que la biblioteca de Facebook activa la operación de autenticación de forma asincrónica, y usted tiene un mecanismo Handler - Callback (llamado completo en un oyente) que podría crear fácilmente este escenario.

Cuando he visto esto informado en mi aplicación, es bastante raro y coincide con la experiencia en la publicación del blog. Algo salió mal para la actividad / fue destruida durante el trabajo de AsyncTask. No sé cómo su modificación podría resultar en esto cada vez, pero tal vez está haciendo referencia a una actividad como el contexto para el diálogo que siempre se destruye en el momento en que se ejecuta el código.

Además, aunque no estoy seguro de si esta es la mejor forma de saber si su actividad se está ejecutando, consulte esta respuesta por un método para hacerlo:

Verifica si la actividad está activa


Me enfrenté exactamente al mismo problema. Llamar a ''(!isFinishing())'' evitó el bloqueo, pero no pudo mostrar el mensaje de ''alerta''.

Luego intenté hacer que la función de llamada fuera "estática" , donde se muestra la alerta. Después de eso, no se produjo un bloqueo y el mensaje también se muestra.

Por ejemplo:

public static void connect_failure() { Log.i(FW_UPD_APP, "Connect failed"); new AlertDialog.Builder(MyActivity) .setTitle("Title") .setMessage("Message") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //do nothing } }) .setIcon(R.drawable.the_image).show(); }


Este sitio web enumera 3 métodos distintos para verificar si se está ejecutando determinada Activity y proporciona fragmentos de código para ayudarlo. Sin embargo, tenga en cuenta que comprobar si una actividad aún se está ejecutando solo se recomienda para fines de depuración ya que su resultado es cualquier cosa menos cierto y, por lo tanto, no es adecuado para el flujo de código / lógica.