Android SkImageDecoder::Factory 返回 null 错误

8
我正在尝试将一张图片从URL加载到ImageView中,但出现了以下错误:SkImageDecoder::Factory返回了null。我该如何解决?
这是我的代码:
private class LoadImageFromURL extends AsyncTask<String, Void, Bitmap>{
        ImageView bitmapImgView;
        public LoadImageFromURL(ImageView bmImgView){
            bitmapImgView = bmImgView;
        }

        @Override
        protected Bitmap doInBackground(String... params) {
            // TODO Auto-generated method stub
            String urlStr = params[0];
            Bitmap img = null;
            try {
                URL url = new URL(urlStr);
                InputStream inputStream = url.openConnection().getInputStream();
                //Options bmFactoryOpt = new Options();
                //bmFactoryOpt.inJustDecodeBounds = false;
                img = BitmapFactory.decodeStream(inputStream);          
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       
            return img;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap){
            bitmapImgView.setImageBitmap(bitmap);
        }
    }
1个回答

17

已解决。将代码更改为以下内容。

@Override
        protected Bitmap doInBackground(String... params) {
            // TODO Auto-generated method stub
            String urlStr = params[0];
            Bitmap img = null;

            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(urlStr);
            HttpResponse response;
            try {
                response = (HttpResponse)client.execute(request);           
                HttpEntity entity = response.getEntity();
                BufferedHttpEntity bufferedEntity = new BufferedHttpEntity(entity);
                InputStream inputStream = bufferedEntity.getContent();
                img = BitmapFactory.decodeStream(inputStream);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return img;
        }

在尝试了其他解决方案一整天后,这个方法对我有效。 - Scutterman
@johnson 只需创建一个扩展AsyncTask的类,就像Simon在他的问题中所示。在按钮的单击事件中,创建您的类的新实例并执行它。Android文档提供了更多信息http://developer.android.com/reference/android/os/AsyncTask.html - Scutterman
你太棒了!这对于获取Facebook用户个人资料图片非常有效! - Droid Chris
它的运行完美,但我不知道问题和解决方案的确切原因。 - Maveňツ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接