2015-10-01 3 views
3

Я пробовал почти все, что упоминалось где-нибудь, но все же я не могу получить профиль профиля пользователя, зарегистрированного в моем приложении для Android. Ниже приводится код, который я использую: -Не удалось получить изображение профиля facebook

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); 

Url для изображения: - http://graph.facebook.com/ {ID}/изображение. Я могу видеть изображение, когда я иду по URL из браузера. Я пробовал как http, так и https.

Кто-то помочь.

Редактировать: Я не хочу использовать любые другие api, кроме fb или обычных андроидов.

ответ

0

вы можете использовать Picasso и установить изображение, используя Picasso так:

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

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

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

ИЛИ

вызов ниже метода в асинхронном задачи и установить возвращенный точечный рисунок как изображение.

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; 
    } 
+1

Я не хочу использовать другие апи для этого. Я не могу сделать это с помощью базового кода и Facebook api? – deep

+0

это не api, это библиотека, которая позволяет вам кэшировать изображения, создавать разные формы с изображениями, позволяет размещать заполнители и многое другое, упрощает обработку изображений. – Aakash

+1

Я попробовал код и даже библиотеку Пикассо. Я могу получить изображение из профиля google, который я смог получить даже раньше, но все еще не могу получить изображение через facebook. – deep