我正在尝试从URL获取位图。我使用的方法是:
public static Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
但我无法通过这一行:“connection.connect();”。 我错过了吗?我该如何连接()?
我的字符串src =“http://i.imgur.com/77H07kP.png”
我读到我应该“这应该在AsyncTask派生类中使用。”。 怎么做?
答案 0 :(得分:0)
提供有关您获得的错误的更多信息。此外,它可能听起来很愚蠢,但是,您是否在清单文件中设置了网络权限?
答案 1 :(得分:0)
尝试这样:
URL imageUrl = new URL(url);
Bitmap img = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
还要确保你有
您的清单中设置了<uses-permission android:name="android.permission.INTERNET" />
权限。 AsyncTask检索图像的示例如下:
public class RetrieveImageAsync extends AsyncTask<Void, Void, Bitmap>
{
private String url;
public RetrieveImageAsync(String imageUrl)
{
this.url = imageUrl;
}
@Override
protected Bitmap doInBackground(Void... params)
{
Bitmap retVal = null;
try
{
URL imageUrl = new URL(url);
return BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
}
catch (Exception ex)
{
}
return retVal;
}
@Override
protected void onPostExecute(Bitmap result)
{
try
{
//Do something with the result Bitmap
}
catch (Exception e)
{
}
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
然后您可以将其初始化为:new RetrieveImageAsync("http://i.imgur.com/77H07kP.png").execute();