启动意图查看器以显示来自url的图像
问题描述:
我有图像的网址。我需要做的是使用意图启动图像的默认图像查看器。启动意图查看器以显示来自url的图像
我试图通过启动它:
Uri uri = Uri.parse("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png");
Intent it = new Intent(Intent.ACTION_VIEW);
it.setDataAndType(uri, "image/*")
startActivity(it);
但它不工作。如果我没有指定数据类型,则意图启动浏览器,因为数据是一个url。它基本上可以工作(因为你可以在浏览器上看到图像),但是我想让画廊为我显示图像。
我也可以将图像下载到位图中,但我仍然不知道如何使用图库显示位图(如果甚至可能的话)。有任何想法吗?
编辑:我试着将位图保存到缓存,然后启动该文件的查看器,但它不起作用。你能发现我的代码有任何错误吗? (该实用程序类是一类我写的方法简单地创建位图它的工作原理,这不是问题。)
File temp = File.createTempFile("tempImage", ".jpg", getContext().getCacheDir());
Bitmap bmp = Utilities.loadBitmap(largeUrl.toString());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(temp));
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.close();
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(temp), "image/jpg");
((Activity) getContext()).startActivity(intent);
编辑2:我决定,我可能需要毕竟这样下载的图片我决定先把它们保存在SD卡上。这造成了其他问题。我问了一个new question,因为这是一个不同的问题。
答
也许画廊要求图像保存到内存。
为什么不将图像下载到位图中,然后将其保存为文件,然后在该文件上激发图像意图?
(如果您不希望文件之后留下来,你可以只将其保存在您的应用程序数据目录)
答
你的代码是好的,但你需要保存在SD卡上的图像(”临时“文件)以使照片查看器工作。测试1.5,1.6,2.1。
答
你可以尝试的GridView onItemClickListner这个代码在默认的画廊,以显示应用
OnItemClickListener myOnItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
Intent it = new Intent(Intent.ACTION_VIEW);
it.setDataAndType(Uri.parse("file://" + (String) parent.getItemAtPosition(position)), "image/*");
startActivity(it);
}
};
这是为我工作:)
我希望能够做到这一点,但不保存的东西,但我想它并不起作用。你能看看我编辑的问题,发现任何错误吗? – 2010-06-01 19:11:40
两条评论:(1)在输出临时文件之前,对其执行setDataAndType。为什么不检索保存的文件,然后将其添加到意图? (2)当你说“它不工作”时,结果或异常是什么? – HXCaine 2010-06-01 19:33:56
在输出之前你的意思是什么?我压缩位图,关闭输出流,然后创建意图... – 2010-06-01 20:32:18