无法获取Facebook个人资料图片

时间:2015-10-01 19:25:15

标签: android facebook facebook-graph-api user-profile

我已经尝试了几乎所有提到的所有内容,但我仍然无法在我的Android应用程序中获取登录用户的个人资料照片。 以下是我正在使用的代码: -

new AsyncTask<String, Void, Bitmap>() {

        @Override
        protected Bitmap doInBackground(String... params) {
            try {
                URL url = new URL(params[0]);
                return BitmapFactory.decodeStream(url.openConnection().getInputStream());
            } catch (Exception e) {
                Log.d("ERROR", "Unable to get Image");
            }
            return null;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            if(saveFlag) {
                saveImage(bitmap);
            }
            imageView.setImageBitmap(bitmap);
        }
    }.execute(url);

图片的网址为: - http://graph.facebook.com/ {ID} /图片。 当我从浏览器访问网址时,我能够看到图像。 我试过http和https。

有人帮忙。

编辑:我不想使用除fb或普通android之外的任何其他api。

1 个答案:

答案 0 :(得分:0)

你可以使用毕加索并使用毕加索设置图像:

URL url = new URL(params[0]);

Picasso.with(context).load(url.toString()).into(imageView);

http://square.github.io/picasso/

OR

在异步任务中调用以下方法,并将返回的位图设置为图像。

private Bitmap getImage(String imageUrl, int desiredWidth, int desiredHeight)
    {   
           private Bitmap image = null;
           int inSampleSize = 0;


            BitmapFactory.Options options = new BitmapFactory.Options();

            options.inJustDecodeBounds = true;

            options.inSampleSize = inSampleSize;

            try
            {
                URL url = new URL(imageUrl);

                HttpURLConnection connection = (HttpURLConnection)url.openConnection();

                InputStream stream = connection.getInputStream();

                image = BitmapFactory.decodeStream(stream, null, options);

                int imageWidth = options.outWidth;

                int imageHeight = options.outHeight;

                if(imageWidth > desiredWidth || imageHeight > desiredHeight)
                {   
                    System.out.println("imageWidth:"+imageWidth+", imageHeight:"+imageHeight);

                    inSampleSize = inSampleSize + 2;

                    getImage(imageUrl);
                }
                else
                {   
                    options.inJustDecodeBounds = false;

                    connection = (HttpURLConnection)url.openConnection();

                    stream = connection.getInputStream();

                    image = BitmapFactory.decodeStream(stream, null, options);

                    return image;
                }
            }

            catch(Exception e)
            {
                Log.e("getImage", e.toString());
            }

        return image;
    }