我在android中开发一个应用程序,我必须得到它 facebook照片到我的申请表中。
在Android中有可能吗?
请帮帮我。
谢谢和问候, durgesh Limbani
答案 0 :(得分: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中的类型以获得不同尺寸的图片。
答案 1 :(得分: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
是String
,其中包含您从Facebook请求的用户ID。
答案 2 :(得分:2)
是的,有可能(对不起,你问的是/否问题:))
使用facebook android sdk,生成一个新的Facebook应用程序ID和所有爵士乐。然后,在您的应用中,您必须要求用户获取访问其个人资料数据的权限,您可以使用图表api获取个人资料图片。
如果您需要有关更具体步骤的帮助,请询问具体问题。
答案 3 :(得分: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();
}
答案 4 :(得分:0)
使用Android Facebook API,可以从中获取Facebook数据。 http://www.ibm.com/developerworks/library/x-androidfacebookapi/ 点击此链接。
答案 5 :(得分: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);
}
}