我有一张图片的网址。我需要做的是使用intent为图像启动默认图像查看器。
我尝试使用以下方式启动它:
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);
但它不起作用。如果我没有指定数据类型,则intent会启动浏览器,因为数据是url。它基本上起作用(因为你可以在浏览器上看到图像)但我想要的是让图库为我显示图像。
我也可以将图像下载到位图中,但我仍然不知道如何使用图库显示位图(如果可能的话)。有什么想法吗?
编辑:我尝试将位图保存到缓存中,然后在该文件上启动查看器,但它不起作用。你能发现我代码上的任何错误吗? (Utilities类是我写的一个类。该方法只是创建了Bitmap。它有效,这不是问题)
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,因为这是一个不同的问题。
答案 0 :(得分:1)
也许画廊要求将图像保存到内存中。
为什么不将图像下载到位图中,然后将其保存为文件,然后启动该文件上的图像意图?
(如果你之后不希望文件留在那里,你可以将它保存在app数据目录中)
答案 1 :(得分:1)
您的代码很好,但您需要将图像保存在SD卡(“temp”文件)上才能使照片查看器正常工作。测试1.5,1.6,2.1。
答案 2 :(得分:0)
您可以尝试使用gridview onItemClickListner的此代码在默认图库App中显示
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);
}
};
这对我有用:)