2012-01-27 1 views
1

J'essaye d'attacher par programme une image à un corps d'email de mon application. J'ai vu quelques sujets au sujet de comment faire cela et mettre mon code exactement de la même manière mais c'est inutile ne pas obtenir l'image de l'autre côté (à partir de post). pour plus d'informations voici mon code:L'image jointe dans l'email n'est pas reçue

Intent emailIntent=new Intent(Intent.ACTION_SEND); 
      emailIntent.setData(Uri.parse("mailto:")); 
      emailIntent.setType("image/jpg"); 
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(R.string.mail_partage_objet)); 
      emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(readEmailTemplate())); 
      String imageFilePath=Constants.PHOTO_CACHE_PATH+"/"+currentPlace.getPhotoFileName(); 
      Log.d(TAG,"Picture Path: "+imageFilePath); 
      emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(imageFilePath)); 
      startActivity(Intent.createChooser(emailIntent, getResources().getString(R.string.email_share))); 

où PHOTO_CACHE_PATH est le chemin du répertoire dans lequel l'image est enregistrée et il est sur SDcard

+0

Salut Houcine, je ne suis pas développeur Android, mais quelques choses à considérer, est l'image ci-jointe et non visible sur l'e-mail ou pas attaché du tout? Que se passe-t-il si vous essayez d'enregistrer le fichier que vous attachez en tant que nouveau nom de fichier, pouvez-vous afficher ce nouveau nom de fichier? – Neo

+0

@Neo: vous devriez demander à la personne qui a posté la question, pas moi :), je viens d'éditer la question pour organiser le code ^^ – Houcine

+0

@Houcine LOL ouais je devrais, mais il était plus facile de taper votre nom dans user748677 ça sonne comme un chiffre statistique;) – Neo

Répondre

0

Je pense que vous avez oublié: emailIntent.setType("application/octet-stream");.

Exemple multiattachments:

Intent exportMessageIntent = new Intent(
      android.content.Intent.ACTION_SEND_MULTIPLE); 
    exportMessageIntent.setType("text/plain"); 
    exportMessageIntent.setType("application/octet-stream"); 
    ArrayList<Uri> uris = new ArrayList<Uri>(); 

      //array of urls to your files on device - they are strings 
    filePaths = new String[] { "path1","path2" }; //for your case just insert imageFilePath -> filePaths = new String[] { imageFilePath }; 
      //create files from string array of paths 
    for (String file : filePaths) { 
     File fileIn = new File(file); 
     Uri u = Uri.fromFile(fileIn); 
     uris.add(u); 
    } 
    exportMessageIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, 
      uris); 

    exportMessageIntent 
      .putExtra(Intent.ACTION_DEFAULT, "test/"); 

    exportMessageIntent.putExtra(Intent.EXTRA_SUBJECT,"Subject text"); 

    exportMessageIntent.putExtra(Intent.EXTRA_TEXT,"bodytext"); 

    startActivity(exportMessageIntent); 

Hope it helps, Toni

+0

Toni, il a mis le type mime à une image jpeg au lieu d'octet-flux – Neo

+0

Oui Neo, je n'ai pas vu cela. Mais je vais laisser l'exemple de travail si quelqu'un en a besoin. Peut-être user748677 concernant votre premier commentaire Neo. Je pense qu'il devrait voir la pièce jointe s'il la partage par la poste (avant qu'il envoie le courrier). Je suis d'accord avec Neo. – toni