2017-10-13 7 views
0

Lorsque j'appuie sur le bouton Partager, le corps du SMS entre très bien, mais je n'arrive pas à voir apparaître l'image. Cela ne ressemble même pas à un attachement.L'image ne sera pas attachée à un message texte même avec un URI de travail

J'ai regardé tout mon code et ça a l'air bien, mais je ne peux pas dire que je suis un expert en développement, alors je suis probablement en train de regarder quelque chose.

Est-ce que quelqu'un sait ce qui pourrait se passer?


Obtenir l'URI de la base de données (je sais que l'URI est correct, car un affichage ImageView correctement basés sur cette même URI):

imageURI = Uri.parse(cursor.getString(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_IMAGE))); 

C'est là que je tente de définir l'URI à la Pièce jointe:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

if (id == R.id.action_shareWine) { 
Intent intentShare = new Intent(Intent.ACTION_SENDTO); 
     intentShare.setData(Uri.parse("smsto:")); // This ensures only SMS apps respond 
     intentShare.putExtra("sms_body", "The sms body goes here"; 
//Attaching the image I want into the text: 
     intentShare.putExtra(intentShare.EXTRA_STREAM, imageURI); 
     if (intentShare.resolveActivity(getPackageManager()) != null) { 
      startActivity(intentShare); 
     } 

Et ce cas, il aide, voici comment je reçois à l'origine l'URI:

private void dispatchTakePictureIntent() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    // Ensure that there's a camera activity to handle the intent 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     // Create the File where the photo should go 
     File photoFile = null; 
     try { 
      photoFile = createImageFile(); 

     } catch (IOException ex) { 

     } 
     // Continue only if the File was successfully created 
     if (photoFile != null) { 
      photoURI = FileProvider.getUriForFile(this, 
        "jeremy.com.wineofmine.fileprovider", 
        photoFile); 

      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
      startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 

     } 
    } 
} 

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = image.getAbsolutePath(); 
    return image; 
} 
+2

** ** M ** MS faire. –

Répondre

1

Je l'ai fixé en changeant le code intentShare à ceci:

Intent intentShare = new Intent(Intent.ACTION_SEND); 
     intentShare.putExtra(intentShare.EXTRA_STREAM, imageURI); 
     intentShare.setType("image/*"); 
     intentShare.putExtra(Intent.EXTRA_TEXT, "The sms body goes here"); 
     if (intentShare.resolveActivity(getPackageManager()) != null) { 
      startActivity(intentShare); 
     } 

ModularSynth m'a aidé à réaliser que ACTION_SENDTO ne fonctionnerait pas, puisque c'est du texte.

Une autre chose qui pourrait aider quelqu'un est que lorsque je suis passé à ti ACTION_SEND, il ne faisait que mettre l'image au début, sans corps. J'ai réparé cela aussi.

Au lieu de cette ligne:

intentShare.putExtra("sms_body", "The sms body goes here"; 

Remplacez-le par:

intentShare.putExtra(Intent.EXTRA_TEXT, "The sms body goes here"); 

Cela vous permet d'envoyer l'image et le texte du MMS. ** S ** MS n'échange aucune pièce jointe.

0

Appel addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) au ACTION_SENDIntent avant d'appeler startActivity(). En ce moment, vous attachez le Uri, mais le destinataire n'a aucun droit de lire le contenu identifié par ce Uri.

+0

J'ai ajouté cette ligne de code mais cela n'a pas résolu ce problème. 'intentShare.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION);' – andrdoiddev