Android 和 Facebook SDK:从 mepicture 图形调用中解码图片

jsAndroidFacebook

1个回答

写回答

19852836879

2025-06-26 09:10

+ 关注

Android
Android

使用AndroidFacebook SDK,我们可以轻松地从Facebook的/me/picture图形调用中解码图片。在本文中,我们将介绍如何使用这些工具来获取用户的个人资料图片,并解码它以在我们的应用程序中显示。

首先,我们需要确保已正确设置AndroidFacebook SDK。我们可以在应用程序的build.gradle文件中添加以下依赖项:

groovy

dependencies {

implementation 'com.Facebook.Android:Facebook-Android-sdk:5.15.3'

}

接下来,我们需要在我们的AndroidManifest.XML文件中添加Facebook应用程序ID和权限:

XML

<Meta-data</p> Android:name="com.Facebook.sdk.ApplicationId"

Android:value="@string/Facebook_app_id" />

<provider</p> Android:name="com.Facebook.FacebookContentProvider"

Android:authorities="com.Facebook.app.FacebookContentProvider{APP_ID}"

Android:exported="false" />

<activity</p> Android:name="com.Facebook.FacebookActivity"

Android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"

Android:label="@string/app_name" />

现在,我们可以开始实现获取个人资料图片的功能。首先,我们需要在我们的应用程序中初始化Facebook SDK。我们可以在应用程序的MAInActivity中的onCreate方法中添加以下代码:

Java

FacebookSdk.sdkInitialize(getApplicationContext());

接下来,我们需要获取用户的权限来访问他们的个人资料图片。我们可以使用LoginManager来请求权限。在我们的MAInActivity中,我们可以添加以下代码来请求权限:

Java

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

一旦我们获得了用户的权限,我们就可以从/me/picture图形调用中获取个人资料图片的URL。我们可以使用GraphRequest来执行此操作。在我们的MAInActivity中,我们可以添加以下代码来获取个人资料图片的URL:

Java

GraphRequest request = GraphRequest.newGraphpathRequest(

AccessToken.getcurrentAccessToken(),

"/me/picture",

new GraphRequest.Callback() {

@Override

public void onCompleted(GraphResponse response) {

try {

JSONObject data = response.getJSONObject();

JSONObject picture = data.getJSONObject("data");

String pictureUrl = picture.getString("url");

// 解码图片并在应用程序中显示

decodeAndDisplayImage(pictureUrl);

} catch (JSONException e) {

e.printStackTrace();

}

}

});

Bundle parameters = new Bundle();

parameters.putString("type", "large");

request.setParameters(parameters);

request.executeAsync();

现在我们已经获得了个人资料图片的URL,我们可以使用Android的BitmapFactory类来解码图片。我们可以在MAInActivity中添加以下方法来解码和显示图片:

Java

private void decodeAndDisplayImage(String pictureUrl) {

try {

URL url = new URL(pictureUrl);

Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());

// 在ImageView中显示解码后的图片

ImageView imageView = findViewById(R.id.imageView);

imageView.setImageBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

}

案例代码:

Java

import Android.graphics.Bitmap;

import Android.graphics.BitmapFactory;

import Android.os.Bundle;

import Android.widget.ImageView;

import Androidx.appcompat.app.AppCompatActivity;

import com.Facebook.AccessToken;

import com.Facebook.FacebookSdk;

import com.Facebook.GraphRequest;

import com.Facebook.GraphResponse;

import com.Facebook.login.LoginManager;

import org.JSon.JSONException;

import org.JSon.JSONObject;

import Java.io.IOException;

import Java.net.URL;

import Java.util.Arrays;

public class MAInActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_mAIn);

FacebookSdk.sdkInitialize(getApplicationContext());

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

GraphRequest request = GraphRequest.newGraphpathRequest(

AccessToken.getcurrentAccessToken(),

"/me/picture",

new GraphRequest.Callback() {

@Override

public void onCompleted(GraphResponse response) {

try {

JSONObject data = response.getJSONObject();

JSONObject picture = data.getJSONObject("data");

String pictureUrl = picture.getString("url");

// 解码图片并在应用程序中显示

decodeAndDisplayImage(pictureUrl);

} catch (JSONException e) {

e.printStackTrace();

}

}

});

Bundle parameters = new Bundle();

parameters.putString("type", "large");

request.setParameters(parameters);

request.executeAsync();

}

private void decodeAndDisplayImage(String pictureUrl) {

try {

URL url = new URL(pictureUrl);

Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());

// 在ImageView中显示解码后的图片

ImageView imageView = findViewById(R.id.imageView);

imageView.setImageBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

}

}

在本文中,我们介绍了如何使用AndroidFacebook SDK从/me/picture图形调用中解码图片。我们首先确保正确设置了AndroidFacebook SDK,并获取了用户的权限来访问他们的个人资料图片。然后,我们使用GraphRequest来获取个人资料图片的URL,并使用Android的BitmapFactory类来解码和显示图片。通过这些步骤,我们可以轻松地在我们的应用程序中获取和显示用户的个人资料图片。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号