使用URI从Web获取图像

时间:2011-06-23 12:07:52

标签: android

此代码有什么问题。它没有给出错误,但没有看到图像

ImageView a= (ImageView) findViewById(R.id.imageView1);

String imageBaseDirectory = "www.dha.com.tr/newpics/news/";
String imageName = "230620111356175716857.jpg";
a.setImageURI(Uri.parse(imageBaseDirectory+imageName)); 

4 个答案:

答案 0 :(得分:4)

首先,您应该在URI的开头添加http://

Uri uri = Uri.parse("http://www.dha.com.tr/newpics/news/230620111356175716857.jpg");

ImageView不支持从远程位置加载图片。仅本地文件系统上的资源或文件。在您的情况下,您应该在LogCat中看到警告:

06-23 15:19:52.487: WARN/System.err(27097): java.io.FileNotFoundException: /http:/www.dha.com.tr/newpics/news/230620111356175716857.jpg (No such file or directory)
06-23 15:19:52.503: WARN/System.err(27097):     at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
06-23 15:19:52.503: WARN/System.err(27097):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
06-23 15:19:52.503: WARN/System.err(27097):     at java.io.FileInputStream.<init>(FileInputStream.java:82)
06-23 15:19:52.503: WARN/System.err(27097):     at java.io.FileInputStream.<init>(FileInputStream.java:134)
06-23 15:19:52.503: WARN/System.err(27097):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:349)
06-23 15:19:52.503: WARN/System.err(27097):     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:399)
06-23 15:19:52.503: WARN/System.err(27097):     at android.graphics.drawable.Drawable.createFromPath(Drawable.java:801)
06-23 15:19:52.503: WARN/System.err(27097):     at android.widget.ImageView.resolveUri(ImageView.java:516)
06-23 15:19:52.503: WARN/System.err(27097):     at android.widget.ImageView.setImageURI(ImageView.java:293)
...
06-23 15:19:52.503: WARN/System.err(27097):     at dalvik.system.NativeStart.main(Native Method)
06-23 15:19:52.503: INFO/System.out(27097): resolveUri failed on bad bitmap uri: http://www.dha.com.tr/newpics/news/230620111356175716857.jpg

您应自行下载图像,然后指定setImageURI的本地路径。

答案 1 :(得分:3)

尝试使用

a.setImageBitmap(BitmapFactory.decodeStream(new URL(imageBaseDirectory+imageName).openConnection().getInputStream()));

在Android documentation中建议。

答案 2 :(得分:0)

您应该在此处发布Logcat输出,以便我们了解可能存在的问题。

但您仍然可能忘记在AndroidManifest.xml中添加INTERNET权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

答案 3 :(得分:0)

Uri.parse需要一个编码的URI字符串,所以我认为你必须添加该方案。

String imageBaseDirectory = "http://www.dha.com.tr/newpics/news/";