我开发了一个移动应用来从URL路径加载图片。
这是我的代码。
private Drawable LoadImageFromWebOperations(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e)
{
System.out.println("Exc="+e);
return null;
}
}
这种方法在Android API 10但在Android设备上无法正常工作的模拟器中运行良好。我使用测试的设备是API 16和17。
请寻求帮助。感谢。
答案 0 :(得分:0)
你做到了吗?:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
是的,你必须连接到互联网。
答案 1 :(得分:0)
LotusUNSW 是对的,您必须添加INTERNET权限,但如果它在模拟器上工作,则似乎已设置此权限。
编辑: 或者,您可以尝试使用此方法:
(最后一段代码是一个没有检查的愚蠢复制粘贴,可用here)
不要忘记在单独的线程中执行此操作(例如,使用AsyncTask)
但试试这件事
private Bitmap getImageBitmap(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e(TAG, "Error getting bitmap", e);
}
return bm;
}
然后
Bitmap b = getImageBitmap("http://sdsdsdsdsdsdsds");
if (b != null)
myImageView.setImageDrawable(d);
来源:here
答案 2 :(得分:0)
尝试将此代码移动到线程或AsyncTask。由于严格模式,无法从主线程完成Http请求。请检查AsyncTask。