2016-02-13 5 views
0

J'essaie de partager un image mais je ne sais pas pourquoi j'échoue, pourriez-vous m'aider s'il vous plaît?Le partage de l'image a échoué

String imageUrl = web.get(position).getImage(); 
    if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) 
     imageUrl = "http://" + imageUrl; 

    Button button = (Button)rowView.findViewById(R.id.condividi); 
    final String finalImageUrl = imageUrl; 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("image/*"); 
      intent.putExtra(Intent.EXTRA_TEXT, web.get(position).getTitle()); 
      File file = writebitmaptofilefirst("the image", finalImageUrl); 
      Uri path = Uri.fromFile(file); 
      intent.putExtra(Intent.EXTRA_STREAM, path); 
      Intent send = Intent.createChooser(intent, null); 
      context.startActivity(send); 
     } 
    }); 

public static File writebitmaptofilefirst(String filename, String source) { 
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File mFolder = new File(extStorageDirectory + "/temp_images"); 
    if (!mFolder.exists()) { 
     mFolder.mkdir(); 
    } 
    OutputStream outStream = null; 


    File file = new File(mFolder.getAbsolutePath(), filename + ".jpg"); 
    if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, filename + ".jpg"); 
     Log.e("file exist", "" + file + ",Bitmap= " + filename); 
    } 
    try { 
     URL url = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

     outStream = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    Log.e("file", "" + file); 
    return file; 

} 

EDIT

String imageUrl = web.get(position).getImage(); 
    if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) 
     imageUrl = "http://" + imageUrl; 

    Button button = (Button)rowView.findViewById(R.id.condividi); 
    final String finalImageUrl = imageUrl; 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("image/*"); 
      intent.putExtra(Intent.EXTRA_TEXT, web.get(position).getTitle()); 
      String file = writebitmaptofilefirst("ndp_image", finalImageUrl); 
      //Uri path = Uri.fromFile(file); 
      intent.putExtra(Intent.EXTRA_STREAM, file); 
      Intent send = Intent.createChooser(intent, null); 
      context.startActivity(send); 
     } 
    }); 

    return rowView; 

} 

public static String writebitmaptofilefirst(String filename, String source) { 
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File mFolder = new File(extStorageDirectory + "/temp_images/"); 
    if (!mFolder.exists()) { 
     mFolder.mkdir(); 
    } 
    OutputStream outStream = null; 


    File file = new File(mFolder.getAbsolutePath(), filename + ".jpg"); 
    if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, filename + ".jpg"); 
     Log.e("file exist", "" + file + ",Bitmap= " + filename); 
    } 
    try { 
     URL url = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

     outStream = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    Log.e("file", "" + file); 
    return file.getAbsolutePath(); 

} 
+0

Quel problème obtenez-vous? Un accident? Si oui, s'il vous plaît poster le LogCat aussi – user2340612

+0

@ user2340612 Je ne reçois pas de plantages, quand je suis sur le point d'envoyer les fichiers en utilisant une application sociale Il semble juste un message comme: ** Le partage a échoué, veuillez réessayer ** (en le cas de Whatsapp) ou ** Impossible de télécharger l'image ** (dans le cas d'Instagram) – Pier

+0

Etes-vous sûr que vous avez besoin des extras 'EXTRA_TEXT' et' EXTRA_STREAM'? Je suppose que vous avez besoin seulement le deuxième – user2340612

Répondre

0

autorisations Ajouter à votre manifeste

Supprimer l'espace de nom de fichier (l'image). Avec l'espace, vous devez décoder l'uri. Vous devez parcourir le chemin complet return file.getAbsolutePath(). Vous venez de passer le nom du fichier.
Dans le cas de fichier existe votre ne pas stocker dans le même chemin. Vous n'étiez pas inclus dans le dictionnaire. extranlstoragepath +/temp_images/+ l'image.jpg essayez d'enregistrer vos chemins de fichier. Et

Fichier fichier = nouveau fichier (mFolder.getAbsolutePath(), nom de fichier + ".jpg");

Vous avez manqué un/entre deux paramètres.

Wonderful blogpost about storing image

+0

J'ai essayé de mettre ** return file.getAbsolutePath() ** mais rien – Pier

+0

Qu'est-ce que vous obtenez? Image enregistrée dans le stockage – SreeAndroidDev

+0

Consultez les modifications pour voir ce que j'ai maintenant – Pier