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


Comparte texto en Facebook desde la aplicación de Android a través de ACTION_SEND.

Tengo una aplicación de Android y admite el envío de texto a través de otras aplicaciones. Por lo tanto, utiliza la intención ACTION_SEND y el campo EXTRA_TEXT. El selector me presenta todas las aplicaciones que pueden manejar tal intención. Esos son Twitter, EMail, … y Facebook. Pero cuando selecciono Facebook abre el navegador y va a la siguiente página:

Http://m.facebook.com/sharer.php?u=mytext

  • Finalizando un Cursor que no ha sido desactivado o cerrado error no fatal
  • Conexión de SQLite se filtró aunque todo se cerró
  • Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
  • Depuración de javascript en tablets / teléfonos Android?
  • Cómo configurar el progreso de SeekBar de Android de forma programable
  • Android: No se puede instanciar la actividad / ClassNotFoundException
  • Muestra mi texto y el botón de envío. Pero cuando presiono el botón de enviar nada happends. La página se carga de nuevo. Creo que sólo es posible enviar URL a través de la aplicación de Facebook. ¿Podría ser eso?

    ¿Alguien logró enviar texto a través de ACTION_SEND a través de la aplicación de Facebook para Android?

  • ¿La codificación dura de la cadena afecta el rendimiento?
  • El botón Volver a la barra de acción no aparece en Android
  • Limitar los lugares decimales en Android EditText
  • Codificador y decodificador Base64
  • Android recyclerView findViewHolderForAdapterPosition devuelve null
  • ¿Cómo integrar el metaio + Open CV para la aplicación android?
  • 10 Solutions collect form web for “Comparte texto en Facebook desde la aplicación de Android a través de ACTION_SEND.”

    EDITADO: con la nueva versión de la aplicación oficial de Facebook para Android (14 de julio de 2011) IT WORKS !!!

    OLD: Los ejemplos anteriores no funcionan si el usuario elige la aplicación de Facebook para compartir, pero funcionan si el usuario elige la aplicación Seesmic para publicar en Facebook. Supongo que Seesmic tiene una mejor aplicación de la API de Facebook que Facebook!

    Para que el recurso Compartir funcione con la aplicación de Facebook, sólo necesita tener al menos un enlace:

    Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "Wonderful search engine http://www.google.fr/"); startActivity(Intent.createChooser(intent, "Share with")); 

    Esto mostrará la ventana de compartición correcta, pero al hacer clic en compartir, no pasa nada (también lo intenté con la aplicación oficial de Twitter, no funciona).

    La única manera que encontré para hacer que el Facebook compartiendo la aplicación de trabajo es compartir sólo un enlace sin texto:

     Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.fr/"); startActivity(Intent.createChooser(intent, "Share with")); 

    Se mostrará la siguiente ventana y el botón Compartir funcionará:

    compartir en FaceBook

    Al parecer, toma automáticamente una imagen y texto del enlace para rellenar el recurso compartido.

    Si desea compartir sólo texto, tendrá que utilizar la api de facebook: https://github.com/facebook/facebook-android-sdk

    06/2013:

    • Este es un error de Facebook, no su código
    • Facebook no va a solucionar este error , dicen que es "por diseño" que se rompió el sistema de compartir Android: https://developers.facebook.com/bugs/332619626816423
    • Utilizar el SDK o compartir sólo la URL.
    • Consejos: puede engañar un poco con el título de la página web como texto para la publicación.

    Primero necesita la opción de consulta Intent to handler sharing. A continuación, utilizar el nombre del paquete para filtrar intención, entonces tendremos sólo un intento de que el manejador de la opción de compartir!

    Compartir a través de Facebook

     Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shareIntent.setComponent(name); v.getContext().startActivity(shareIntent); break; } } 

    Bonus – Compartir a través de Twitter

     Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shareIntent.setComponent(name); v.getContext().startActivity(shareIntent); break; } } 

    Y si quieres encontrar la manera de compartir a través de otra aplicación de uso compartido, puedes encontrarla allí .

    Así que tengo un trabajo alrededor, pero asume que tiene control sobre la página que está compartiendo …

    Si formatea su EXTRA_TEXT como si …

     String myText = "Hey!\nThis is a neat pic!"; String extraText = "http://www.example.com/myPicPage.html?extraText=\n\n" + myText; 

    … entonces en aplicaciones que no son de Facebook, su texto debería aparecer algo como esto:

    http://www.example.com/myPicPage.html?extraText=

    ¡Oye!
    ¡Esto es una imagen aseada!

    Ahora, si actualiza su sitio web para que las solicitudes con el parámetro de consulta extraText devuelvan el contenido de extraText en los metadatos de la página.

     <!-- Make sure to sanitize your inputs! eg http://xkcd.com/327/ --> <meta name="title" content="Hey! this is a neat pic!"> 

    Entonces, cuando Facebook se escapa de esa url para generar el diálogo, leerá los metadatos del título e incrustará en el diálogo de la parte.

    Me doy cuenta de que esta es una solución bastante yuck, así que tomar con un grano de sal …

    Parece que la aplicación de Facebook maneja esta intención incorrectamente. La forma más confiable parece ser usar la API de Facebook para Android.

    El SDK está en este enlace: http://github.com/facebook/facebook-android-sdk

    Bajo 'uso', hay esto:

    Mostrar un diálogo de Facebook.

    El SDK admite varios diálogos WebView html para las interacciones de los usuarios, como la creación de una publicación mural. Esto tiene como objetivo proporcionar una funcionalidad rápida de Facebook sin tener que implementar una interfaz de usuario de Android nativa y pasar datos a Facebook directamente a través de las API.

    Esto parece ser la mejor manera de hacerlo – mostrar un diálogo que se publicará en la pared. El único problema es que pueden tener que iniciar sesión primero

     Check this out : By this we can check activity results also.... // Open all sharing option for user Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, ShortDesc+" from "+BusinessName); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, ShortDesc+" "+ShareURL); sharingIntent.putExtra(Intent.EXTRA_TITLE, ShortDesc+" "+ShareURL); startActivityForResult(Intent.createChooser(sharingIntent, "Share via"),1000); /** * Get the result when we share any data to another activity * */ public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case 1000: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show(); else Toast.makeText(getApplicationContext(), "Activity 1 returned NOT OK", Toast.LENGTH_LONG).show(); break; case 1002: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show(); break; }// end switch }// end onActivityResult 
     ShareDialog shareDialog = new ShareDialog(this); if(ShareDialog.canShow(ShareLinkContent.class)) { ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentTitle(strTitle).setContentDescription(strDescription) .setContentUrl(Uri.parse(strNewsHtmlUrl)) .build(); shareDialog.show(linkContent); } 

    Parece que es un error en la aplicación de Facebook que se informó en abril de 2011 y todavía tiene que ser arreglado por los desarrolladores de Android Facebook.

    El único trabajo alrededor por el momento es utilizar su SDK.

    Si desea mostrar texto poner # en la mendicidad del mensaje que desea compartirlo como Hashtag

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