分享图片失败

Sharing image failed

我正在尝试分享 image 但我不知道为什么我失败了,你能帮我吗?

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;

}

编辑

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();

}

向您的清单添加权限

从文件名(图像)中删除 space。使用 space 您需要解码 uri。您应该传递完整路径 return file.getAbsolutePath()。您只是传递文件名。
在文件存在的情况下,您不会存储在同一路径中。你没有被收录在字典里。 extranlstoragepath+/temp_images/+image.jpg 尝试记录您的文件路径。并且

File file = new File(mFolder.getAbsolutePath(), 文件名 + ".jpg");

您错过了两个参数之间的 / 。

Wonderful blogpost about storing image