在Android上为Facebook SDK 3.0创建类
是否可以创建一个类来封装Android上的Android SDK i、 我不想把我的活动和所有的FB课程和东西混在一起,我想有一个我可以调用的类,它会完成任务 比如说,在Android上为Facebook SDK 3.0创建类,android,facebook,facebook-android-sdk,android-facebook,Android,Facebook,Facebook Android Sdk,Android Facebook,是否可以创建一个类来封装Android上的Android SDK i、 我不想把我的活动和所有的FB课程和东西混在一起,我想有一个我可以调用的类,它会完成任务 比如说, FacebookSDK sdk = new FacebookSDK(); sdk.publish(); 目前,我找不到一种方法来做到这一点,不使用片段或将我的活动与facebook代码混在一起 非常感谢 简言之,没有 您的活动需要通知Facebook SDK生命周期事件,以便正确存储状态并处理进出Facebook SDK活动的
FacebookSDK sdk = new FacebookSDK();
sdk.publish();
目前,我找不到一种方法来做到这一点,不使用片段或将我的活动与facebook代码混在一起
非常感谢 简言之,没有
您的活动需要通知Facebook SDK生命周期事件,以便正确存储状态并处理进出Facebook SDK活动的UI流
是尽可能多地封装这一点的努力
您可以通过让所有活动扩展一些基类(即FBActivity)来理顺代码,这些基类可以正确调用
UILifecycleHelper
,但这只有在您的所有活动都以相当统一的方式与Facebook交互时才有帮助。这是关于会话管理的
//Check for active session -
Session session = Session.getActiveSession();
// if it doesnt exist create one-
if(session ==null)
session= new Session(getApplicationContext)
// if it is not open open it first
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setPermissions(Arrays.asList("basic_info"))
.setCallback(statusCallback));
}
else
{
Session.openActiveSession(getActivity(), this, true, statusCallback);
}
// callback listner fires when session state changes
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
//If your session is opened
if(session.isOpened()
publishData(session);
}
方法来发布您的请求-
public void publishData(Session session)
{
OpenRequest open = new OpenRequest(this);
open.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
open.setPermissions(Arrays.asList(new String[]{"email", "publish_actions", "user_birthday", "user_hometown"}));
open.setCallback(this);
session.openForPublish(open);
}
发布数据定义也可以是-
public void publishData(Session session)
{
Bundle params = new Bundle();
params.putByteArray("message", "some message".egtBytes());
params.putByteArray("name", "some name".getBytes());
params.putByteArray("link", "some link".getBytes());
params.putByteArray("description", "Some description".getBytes());
params.putByteArray("picture", "picture.url".getBytes());
Request postToWall = Request.newRestRequest(session,
"/" + pickedUsersId.get(0) + "/feed", params, HttpMethod.POST);
postToWall.setCallback( new Request.Callback()
{
@Override
public void onCompleted(Response response)
{
// get response
Log.e(TAG, response.toString());
}
});
Request.executeBatchAsync(postToWall);
}
谢谢,但是看起来你仍然需要一个活动来完成所有这些不,你只需要在方法内部传递listner,你就会在你的类内部得到调用,不需要活动,如果你知道我的意思,或者如果你想要的话,我也可以为此添加代码段