2010-12-13 17 views
13

Estoy usando algo como esto para compartir algo de texto usando las aplicaciones disponibles en el teléfono del usuario.Android share intented chooser

public void share(String subject,String text) { 
    final Intent intent = new Intent(Intent.ACTION_SEND); 

    intent.setType("text/plain"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putExtra(Intent.EXTRA_TEXT, text); 

    startActivity(Intent.createChooser(intent, getString(R.string.share))); 
} 

Mi principal problema es que me gustaría tener un texto diferente si el usuario elige Twitter en lugar de correo electrónico, por ejemplo (versión corta con URLs cortas VS texto completo con imágenes adjuntas).

¿Cómo puede uno saber qué aplicación ha decidido utilizar el usuario?

+0

gumbercules tiene una respuesta fantástica aquí: http://stackoverflow.com/questions/5734678/custom-filtering-of-intent-chooser-based-on-installed-android-package-name – hitch45

Respuesta

8

Una vez que entregue el texto al sistema con createChooser fuera de sus manos, no hay forma de cambiar el texto después de eso.

+0

Así Tendría que construir mi propio selector? : -/Diseño de API torpe, ¿no? En ese caso, ¿algún código de muestra sobre cómo crear la intención específicamente para Twitter o Facebook, por ejemplo? –

+2

la aplicación en cuestión tendría que haber publicado su propia API pública para enviar tweets, estado de actualización, etc. Twitdroid es la única aplicación que conozco que lo ha hecho y ninguna otra sigue su convención. Personalmente, no me importa este diseño, creo que la conveniencia vale la pena el intercambio. – schwiz

+0

Es realmente conveniente, sin embargo, es bastante difícil adaptarse a las limitaciones en la longitud del mensaje, por ejemplo. Puede que simplemente agregue un cuadro de diálogo que le pregunte al usuario si quiere compartir la cosa como un texto corto o largo. No es óptimo en cuanto a la cantidad de clics para lograr lo que necesita, pero solo de la manera en que puedo pensar hasta ahora. Gracias por el aporte. –

1
Intent intent = new Intent(Intent.ACTION_SEND); 

intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, textWhichYouWantToShare); 

startActivity(Intent.createChooser(intent, getString(R.string.share))); 
Cuestiones relacionadas