如何在android上以编程方式在facebook上分享短信

时间:2014-08-02 18:02:22

标签: android facebook facebook-graph-api

我想以编程方式将一些文字以及我的应用中的一张图片分享到脸书墙上。 我已经在facebook开发者网站上注册了我的Android应用程序。 我使用以下代码发布文本,但它不起作用。它也没有给我任何错误,所以我完全混淆了里面发生的事情。

public class FacebookManager {

private Activity activity;
private Session.StatusCallback statusCallback;
public UiLifecycleHelper uiHelper;

public FacebookManager(final Activity activity) {
    this.activity = activity;

    statusCallback = new ShareStatusCallback();
    uiHelper = new UiLifecycleHelper(activity, null);
}

public void share() {

    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForPublish(new Session.OpenRequest(activity).setCallback(statusCallback).setPermissions("publish_actions"));
    } else {
        Session.openActiveSession(activity, true, statusCallback);
    }
}


public void initFbSession(Bundle savedInstanceState) {
    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(activity, null, null, savedInstanceState);
        }
        if (session == null) {
            session = new Session(activity);
        }
        Session.setActiveSession(session);
    }
}

private class ShareStatusCallback implements Session.StatusCallback {

    @Override
    public void call(Session session, SessionState state, Exception exception) {
        if (!session.isOpened()) {
            return;
        }
        if (FacebookDialog.canPresentShareDialog(activity, FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
            FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(activity)
                    .setDescription("Test Message ")
                    //.setPicture("")
                    .build();
            uiHelper.trackPendingDialogCall(shareDialog.present());
        } else {
            Bundle params = new Bundle();
            params.putString("description", "Test Message");
           // params.putString("picture", "");
            WebDialog feedDialog = (
                    new WebDialog.FeedDialogBuilder(activity,
                            Session.getActiveSession(),
                            params)).build();
            feedDialog.show();
        }
    }
}

}

在Facebook开发者网站上安装Android应用程序是否需要使用共享功能? 请帮帮我。

1 个答案:

答案 0 :(得分:0)

setDescription仅适用于您有链接(通过setLink)。

您不能预先填写实际邮件本身,这是针对Facebook的平台政策(用户必须自己输入邮件)。

我们将更新javadoc,以便更清楚。