2010-10-17 3 views
3

Je tente de créer un bouton "Publier" pour une image dans mon application Android, qui fonctionne avec l'application Facebook et Email.Utilisation d'ActionChooser avec pièce jointe pour e-mail et application Facebook dans Android

Ceci est mon code (imagePath est quelque chose comme « /sdcard/myapp/image.jpg »

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.setType("image/jpeg"); 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+imagePath)); 

sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the photo"); 
startActivity(Intent.createChooser(sendIntent, "Email:")); 

Cela fonctionne parfaitement pour envoyer l'e-mail avec la pièce jointe, mais il ne fonctionne pas avec le Facebook . App Si j'utilise

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(imagePath)); 

la publication de Facebook fonctionne -. mais l'email-pièce jointe est pas envoyer plus

Toutes les idées que COU Je le fais pour les deux?

Répondre

2

Si quelqu'un est intéressé ... Je l'ai résolu d'une manière indirecte:

File imageFile = new File(imagePath); 
    String url = ""; 
    try { 
     url = Media.insertImage(getContentResolver(), imageFile.getAbsolutePath(), imageFile.getName(), imageFile.getName()); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url)); 
0

Dans ma demande j'ai besoin de partager un message par e-mail, gmail , txt et facebook. J'utilise ce bout de code

Intention sendIntent = new Intent (Intent.ACTION_SEND); sendIntent.putExtra (Intent.EXTRA_TEXT, "body"); sendIntent.setType ("text/plain"); startActivity (Intent.createChooser (sendIntent, "Partager via"));

Ce code me fournit une liste d'options qui contient du partage via email, gmail et messagerie. Comment ajouter facebook dans cette liste?

+0

Installez l'application Facebook. – mseo

+0

Comment installer l'application facebook? J'ai inclus Facebook pour Android SDK dans mon application. Pouvez-vous élaborer s'il vous plaît? – Sam

1

mseo signifie, installez l'application (gratuite) facebook sur votre téléphone!

J'ai simplement adapté le code de mseo à ma propre application et partagé une image via Gmail et Facebook. Je vois une liste de fournisseurs qui comprend Facebook (j'ai l'application FB installée sur mon téléphone, je ne verrais pas l'option FB autrement), et aussi Blogger, Wordpress, Twitter, Dropbox, etc.

Édité: pour envoyer un fichier existant, mieux:

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile)); 

Édité: cela fonctionne bien avec e-mail et Dropbox. Il fonctionne également avec Facebook (via l'application Android officielle de Facebook), mais pour une raison quelconque, l'image originale est supprimée de la carte SD après avoir posté sur Facebook. Cela a été rapporté par d'autres et est probablement dû à un bug dans l'application Facebook. J'ai travaillé autour de lui en sauvegardant l'image avant de la partager et de la restaurer à partir de la sauvegarde plus tard nécessaire.

0

Facebook attendez l'URL à l'image. Ceci explique pourquoi le code

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(imagePath)); 

fonctionne très bien. En utilisant url facebook, vous obtenez des données imiage et les stocke sur le serveur.