动态更改Intent.EXTRA_STREAM名称

时间:2014-02-05 09:36:34

标签: android

我在飞行中尝试更改“Intent.EXTRA_STREAM”文件名。 即时通讯使用imageloader加载图像,它将缓存本地SD卡上的文件。 现在我试图将这些图像附加到电子邮件意图并发送它们。 问题是没有扩展名的文件的名称和其他共享mehtod的cuz问题,如bluetoosh或一些电子邮件hayoola。 Imageloader获取URL并将其存储在Sdcard上。 在Imageloader上有一个函数,我传递了URL并返回URI:

public Uri getUri(String url) 
{
    File f=fileCache.getFile(url);
    return Uri.fromFile(f);
}

这是我的代码:

emailIntent.putExtra(Intent.EXTRA_STREAM, (imageloader.getUri(ImgUrl)));

现在问题是这是没有扩展名的文件返回名称:

file:///mnt/sdcard/mygallery/896105659

我试图添加“+”.png“”但它返回错误Java.lang.nullpointerexception

表示网址:正常图片网址:“http://www.ischgl.com/website/var/tmp/image-thumbnails/41395/thumb__lightbox/vider-alp_81712.jpeg” 我在FileCache中使用它:

String filename=String.valueOf(url.hashCode());

1 个答案:

答案 0 :(得分:3)

好的,我发现WorkAround在添加之前更改了名称:

File fileOutput=null;
        try {
            fileOutput = new File(Environment.getExternalStorageDirectory() + File.separator + "MyImage_.png");
            fileOutput.createNewFile();
            copyFile(Imageloader.getFile(ImageUrl), fileOutput);
        } catch (IOException e) {
                    // TODO Auto-generated catch block
            e.printStackTrace();
        }
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fileOutput));
startActivity(Intent.createChooser(emailIntent, getResources().getString(R.string.share)));

和复制:

    void copyFile(File src, File dst) throws IOException {
    FileChannel inChannel = new FileInputStream(src).getChannel();
    FileChannel outChannel = new FileOutputStream(dst).getChannel();
    try {
        inChannel.transferTo(0, inChannel.size(), outChannel);
    } finally {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}