我在飞行中尝试更改“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());
答案 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();
}
}