2011-07-15 12 views
3

私は のFacebookの写真を自分のアプリケーションに持っていなければならないアンドロイドでアプリケーションを開発しています。どのように私のアンドロイドアプリケーションでFacebookのプロフィールの画像を取得するには?

アンドロイドでも可能ですか?

私を助けてください。

おかげで、よろしく、 durgesh Limbani

+0

としてあなたFacebookMainActivityコード。私はグラフAPIを使用しています。リンクhttp://developers.facebook.com/docs/reference/api/ – Dugs

答えて

2

はい、それは可能です(申し訳ありませんが、あなたがイエスを求めている/いない質問:))

新しいFacebookアプリを生成し、FacebookのアンドロイドSDKを使用idとそのすべてのジャズ。次に、あなたのアプリケーションでは、プロファイルデータにアクセスする権限をユーザに求めなければなりません。そこからグラフAPIを使用してプロフィール画像を取得することができます。

具体的な手順についてはヘルプが必要な場合は、特定の質問をしてください。

+0

facebook ProfilePictureViewで丸い画像を表示するにはどうすればいいですか? – Ravi

11

必要なのは、ユーザーのユーザーIDで、その後、あなたは次のように関数を呼び出すことができます。

/** 
* Function loads the users facebook profile pic 
* 
* @param userID 
*/ 
public Bitmap getUserPic(String userID) { 
    String imageURL; 
    Bitmap bitmap = null; 
    Log.d(TAG, "Loading Picture"); 
    imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small"; 
    try { 
     bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageURL).getContent()); 
    } catch (Exception e) { 
     Log.d("TAG", "Loading Picture FAILED"); 
     e.printStackTrace(); 
    } 
    return bitmap; 
} 

あなたは、異なるサイズの画像を取得するためにimageURLにでタイプを変更することができます。まださまよっ方のため

10

: をFacebookのSDKを使用して示すように、あなたはXMLでProfilePictureViewを実装できます。

<com.facebook.widget.ProfilePictureView 
    android:id="@+id/profilePicture" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:is_cropped="true" 
    app:preset_size="small" /> 

そして、あなたは、ユーザーのIDを持っていたら(取得するための要求をしなければなりません1つが、それはまた別の話だ)、あなたはProfilePictureView自体を取得することができますし、呼び出します。

userIDはあなたがFacebookのから要求したユーザーのIDを含む Stringある
ProfilePictureView profilePicture = (ProfilePictureView) view.findViewById(R.id.profilePicture); 
    profilePicture.setProfileId(userID); 

を。

+0

しかし、このビューは柔軟性がありません。例えば、円形の画像が必要な場合。 – Loolooii

+0

あなたはどのように私は円形の画像を表示することができます共有することができます。私はたくさんの検索したが、何も見つかりませんでした。 – Ravi

+0

FacebookのSDKを使って最初のログイン時に画像を取得するためにこれを使用しましたが、アプリが読み込まれるたびに戻す方法がわかりません。 – ntgCleaner

0

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal" > 
      <com.facebook.widget.ProfilePictureView 
       android:id="@+id/userProfilePicture" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_gravity="center" 
       android:gravity="center_horizontal" 
       facebook:preset_size="small" /> 
      <TextView 
       android:id="@+id/userName" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:layout_gravity="center" 
       android:textColor="#333" 
       android:textSize="18sp" /> 
    </LinearLayout> 

としてのあなたのレイアウトactivity_facebook_mainと私は私のこの質問のANSを見つけ

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.TextView; 

import com.facebook.Request; 
import com.facebook.Response; 
import com.facebook.Session; 
import com.facebook.SessionState; 
import com.facebook.model.GraphUser; 
import com.facebook.widget.ProfilePictureView; 

public class FacebookMainActivity extends ActionBarActivity { 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_facebook_main); 

      Session.openActiveSession(this, true, new Session.StatusCallback() { 

       public void call(Session session, SessionState state, Exception exception) { 

       if (session.isOpened()) { 

        Request.newMeRequest(session, new Request.GraphUserCallback() { 
         @Override 
          public void onCompleted(GraphUser user, Response response) { 
          if (user != null) {    

           ProfilePictureView profilePictureView = (ProfilePictureView) findViewById(R.id.userProfilePicture); 
           profilePictureView.setCropped(true); 
           profilePictureView.setProfileId(user.getId()); 

           TextView Name = (TextView) findViewById(R.id.userName);              
           Name.setText(user.getName()); 

    } 
          } 
         }).executeAsync(); 
        }    
       } 
      }); 
     } 

    @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
     } 
} 
1
private void saveFacebookProfilePicture(final String userID){ 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      try{ 
      URL imageUrl = new URL("https://graph.facebook.com/" + userID + "/picture?type=large"); 
       Bitmap bitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream()); 
       FileOutputStream fileOutputStream = new FileOutputStream(new File(getFilesDir(),ProfileEditActivity.PROFILE_PIC)); 
       bitmap.compress(CompressFormat.PNG, 100, fileOutputStream); 
      }catch(Exception e) 
      { 
       Log.e(TAG, ""+e.getMessage()); 
      } 



     } 
    }).start(); 


} 
関連する問題