2010-06-01 74 views
6

我有图像的网址。我需要做的是使用意图启动图像的默认图像查看器。启动意图查看器以显示来自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,因为这是一个不同的问题。

回答

1

也许画廊要求图像保存到内存。

为什么不将图像下载到位图中,然后将其保存为文件,然后在该文件上激发图像意图?

(如果您不希望文件之后留下来,你可以只将其保存在您的应用程序数据目录)

+1

我希望能够做到这一点,但不保存的东西,但我想它并不起作用。你能看看我编辑的问题,发现任何错误吗? – 2010-06-01 19:11:40

+0

两条评论:(1)在输出临时文件之前,对其执行setDataAndType。为什么不检索保存的文件,然后将其添加到意图? (2)当你说“它不工作”时,结果或异常是什么? – HXCaine 2010-06-01 19:33:56

+0

在输出之前你的意思是什么?我压缩位图,关闭输出流,然后创建意图... – 2010-06-01 20:32:18

1

你的代码是好的,但你需要保存在SD卡上的图像(”临时“文件)以使照片查看器工作。测试1.5,1.6,2.1。

0

你可以尝试的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); 
    } 
}; 

这是为我工作:)