簡體   English   中英

在Android上為Facebook SDK 3.0創建一個類

[英]Creating a class for Facebook SDK 3.0 on Android

是否可以創建一個類來封裝Android SDK上的Android SDK?

即 - 我不想讓我的活動與所有的FB會話和東西混亂,我希望有一個我可以打電話的課程,它會完成這項工作。

例如,

FacebookSDK sdk = new FacebookSDK();
sdk.publish();

現在我找不到辦法做到這一點,沒有使用碎片或使我的活動與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);
    }

publishData定義也可以 -

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

簡而言之,沒有。

您的活動需要通知Facebook SDK生命周期事件,以便正確存儲狀態並處理與Facebook SDK活動之間的UI流程。

UILifecycleHelper試圖盡可能地封裝它。

您可以通過讓所有活動擴展到對UILifecycleHelper進行所有正確調用的基類(即FBActivity)來整理您的代碼,但這只有在您的所有活動以相當統一的方式與Facebook交互時才UILifecycleHelper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM