Compartir la devolución de llamada no funciona con Facebook SDK 4 Android
Recientemente he cambiado mi aplicación a FB SDK 4.0 y tengo algunos problemas raros con el uso compartido. El diálogo de uso compartido funciona muy bien – Puedo compartirlo con la aplicación de Facebook y WebDialog. Sin embargo, después de compartir correctamente o no compartir mi devolución de llamada no funciona en absoluto, por lo que ni siquiera puedo mostrar un brindis o registrar nada. Así es como lo hago:
shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { // This doesn't work Toast.makeText(f.getActivity(), "You shared this post", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { // This doesn't work e.printStackTrace(); } });
Incluso he intentado depurar la aplicación – sin efecto – este código ni siquiera fue llamado.
- Androide. Enviar texto a Facebook messenger por Facebook SDK 4.X
- Inicio de sesión de Android Facebook SDK 4.0 con LoginManager
- Utiliza ShareContent de Facebook sdk en la intención de acciones android
- La URL de Google Play desordena el diálogo compartido de Facebook
- Cómo habilitar las pestañas personalizadas de Chrome para iniciar sesión en Facebook con Android SDK
Entonces, ¿podrías señalarme qué estoy haciendo mal o qué me falta?
Actualizar
Ya que estoy usando una clase especial para trabajar con FB SDK, he aquí la parte de la misma:
private static CallbackManager fbManager; public static CallbackManager init(Activity c) { if (!FacebookSdk.isInitialized()) { FacebookSdk.sdkInitialize(c); } return fbManager = CallbackManager.Factory.create(); } ... public static void share(final Fragment f, final String title, final String description, final String link) { ShareDialog shareDialog = new ShareDialog(f); shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { Toast.makeText(f.getActivity(), "You shared this post", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { e.printStackTrace(); } }); shareDialog.show(f, composeContent(title, description, link));
Y aquí cómo se ve en fragmento:
private CallbackManager callbackManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); callbackManager = FacebookHelper.init(getActivity()); } ... @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { callbackManager.onActivityResult(requestCode, resultCode, data); } private void publishStory() { FacebookHelper.share(this, "Title", getResources().getString(R.string.sharing_text), sharingLink); }
- Facebook SDK 4 para Android - cómo cerrar sesión mediante programación
- Fusión de manifiesto de Android con las bibliotecas de facebook y firebase
- FacebookButton SDK v4 LoginButton ignora las personalizaciones XML
- El diálogo de la parte posterior del facebook de la identificación del poste vuelve siempre null en androide
- FacebookCallback.onCancel se llama cuando se intenta iniciar sesión con facebook sdk
- El diálogo compartido de Android facebook 4.0.0 no comparte el contenido
- No se pudo inicializar LoginButton Facebook-sdk para android
- AppInviteDialog no funciona en Android SDK de Facebook 4.0
Tienes que anular el método onActivityResult, Actualiza tu método como sigue,
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }
No olvide anular:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }
Si se utiliza en Fragmento, también debe agregar:
loginBtn = (LoginButton) view.findViewById(R.id.fb_login_button); loginBtn.setFragment(this);
Usted necesita especificar A requestCode cuando usted registra un facebookcallback. shareDialog.registerCallback(**, **, requestCode);
Asegúrese de pasar el fragmento (en lugar de pasar la actividad) al crear el ShareDialog:
// From within a fragment ShareDialog dialog = new ShareDialog(this);
Entonces puedes dejar facebookCallbackManager.onActivityResult()
dentro del método onActivityResult()
tu fragmento.
- Cambiar el modo de ubicación a alta precisión mediante programación Android
- Publicar automáticamente la aplicación beta de Android en Google Play Store