Compartir contenido en FaceBook Android
Utilizo intención y Action.SEND para compartir mi mensaje personalizado en redes sociales como WhatsApp, twitter, Facebook y GMail. Todo está bien en Gmail y otras aplicaciones, excepto Facebook! ¿Cómo puedo personalizar mi código para compartir algo en Facebook también? Yo comparto en Facebook usando Facebook SDK sin ningún problema, pero quiero hacerlo usando una intención.
Esto es lo que uso:
- Facebook Android SDK, UiLifecycleHelper Error de StackOverflow
- Cómo publicar checkin en un lugar personalizado (como foursquare)
- Android facebook como usar la vista web
- Diferencia entre onActivityResult y onComplete de Session.StatusCallback Facebook Android sdk3.0
- Android Facebook SDK 3.0 proporciona "remote_app_id no coincide con el ID almacenado" al iniciar sesión
Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp"); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle); sendIntent.setType("*/*"); startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article"));
- Error al inflar la clase com.facebook.login.widget.LoginButton con Android Studio y Facebook 4.6.0
- Android: Cómo utilizar más de un paquete en la configuración de la aplicación de Facebook
- Cómo resolver las herramientas de Facebook: replace = "android: theme"?
- Autenticación de Facebook en mi servidor con Android
- NoClassDefFoundError al ejecutar el ejemplo oficial de Facebook
- Facebook Android SDK 4.0.0 no obtener información del perfil
- Cómo compartir texto e imagen en Facebook con Intent
- Facebook Like Button en Aplicación para Android
Lo que hice fue en realidad interceptar el objetivo elegido de los intentantes, puedes hacerlo usando tu actionprovider. Digamos que creaste un elemento que con un onclick inicia la intención. Para ello, puede crear instancias de un proveedor de acciones para hacerlo. Este actionprovider puede tener un setOnShareTargetSelectedListener para interceptar cualquier intención que desee manejar de manera diferente (o no en absoluto ^^). Consulte el siguiente código para saber cómo configurar su actionprovider.
actionProvider.setShareIntent(createShareIntent()); actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){ @Override public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) { mfacebooksharer.shareStatus(subject, text); return true; } return false; } });
Siempre que el facebook es elegido, uso mi mfacebooksharer para manejar la intención y seguir la API de facebook. Por supuesto, que actionrpovider necesita tener una intención. (Al igual que usted quería trabajar con una intención). Utilizo el método siguiente para crear la intención.
private Intent createShareIntent() { intentsetter.setIntentleave(true); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text); return shareIntent; }
De acuerdo con las Políticas de plataforma de Facebook, no puede rellenar previamente el cuadro de diálogo compartido con Intent.EXTRA_TEXT
. Por lo general se cree que es un error, pero como por un informe de errores presentado aquí y también, aquí , Facebook claramente menciona que este no es el caso (no es un error).
Puede leer más sobre sus Políticas de Plataforma específicamente, la Política de Plataforma IV.2
Cita de la Plataforma Política IV.2:
No debe pre-llenar ninguno de los campos asociados a los siguientes productos, a menos que el usuario genere manualmente el contenido anteriormente en el flujo de trabajo: Historias de flujo (parámetro user_message para Facebook.streamPublish y FB.Connect.streamPublish y parámetro de mensaje para la secuencia. Publicar), fotos (título), videos (descripción), notas (título y contenido), enlaces (comentario) y Jabber / XMPP.
Estos campos están destinados a que los usuarios se expresen. Pre-llenar estos campos erosiona la autenticidad de la voz del usuario.
La única manera de compartir historias de tu aplicación es integrando el SDK de Facebook, que según tu publicación ya podrás hacerlo con éxito. Esa es la única opción disponible (por desgracia).
Uso de Intent en Android, sólo puede compartir un vínculo sin texto:
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca"); startActivity(Intent.createChooser(intent, "Share with"));
Funcionará. Si quieres compartir texto y enlaces, debes usar el SDK de Facebook para Android: https://github.com/facebook/facebook-android-sdk