2011-07-15 90 views

回答

2

是的,这是可能的(对不起,你问一个是/否的问题:))

使用Facebook Android SDK中,生成新的Facebook应用程序身份证和所有爵士乐。然后,在您的应用程序中,您必须要求用户获得访问其个人资料数据的权限,您可以使用图表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(必须做出请求来获取那一个,但这是另一回事),你可以得到ProfilePictureView本身并拨打:

ProfilePictureView profilePicture = (ProfilePictureView) view.findViewById(R.id.profilePicture); 
    profilePicture.setProfileId(userID); 

哪里userID是包含你从Facebook要求用户ID的String

+0

但这种观点根本不灵活。例如,如果你想要一个圆形图像。 – Loolooii

+0

你可以请分享我如何显示圆形图像。我搜索了很多,但没有找到任何东西。 – Ravi

+0

我已经使用这个来获取初始登录时的图片,以及facebook SDK,但我不确定如何在每次加载应用程序时将其恢复。 – ntgCleaner

0

布局activity_facebook_main作为

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

和你FacebookMainActivity代码

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


} 
相关问题