2

我想知道更新用户 Facebook 状态的最简单方法。我想简单地显示一个“分享”按钮。当用户触摸“分享”时:

  1. 如果他们已经登录到 Facebook,将出现一个对话框,让他们可以选择在提交到 Facebook 之前编辑他们的帖子。

  2. 如果他们尚未登录 Facebook,将提示他们登录,然后在成功登录后自动显示共享对话框。

有没有一种简单的方法可以做到这一点,还是我需要实现一个单独的 facebook 登录流程?

4

2 回答 2

3

所以我认为我有一个非常干净的方法来做到这一点。我欢迎任何意见。

我正在发布我的整个 Facebook 管理器类,它可以完成登录工作并打开提要对话框:

public class ManagerFacebook
{
    private Activity mActivity;

    public void updateStatus(final String name, final String caption, final String description, final String link, final String urlPicture,
        final Activity activity, final ListenerShareFacebook listenerShareFacebook)
    {
        mActivity = activity;

        // start Facebook Login
        Session.openActiveSession(activity, true, new Session.StatusCallback()
        {
            // callback when session changes state
            public void call(final Session session, SessionState state, Exception exception)
            {
                if (session.isOpened())
                {
                    publishFeedDialog(name, caption, description, link, urlPicture, listenerShareFacebook);
                }

            }
        });
    }

    private void publishFeedDialog(String name, String caption, String description, String link, String urlPicture,
        final ListenerShareFacebook listenerShareFacebook)
    {
        Bundle params = new Bundle();
        params.putString("name", name);
        params.putString("caption", caption);
        params.putString("description", description);
        params.putString("link", link);
        params.putString("picture", urlPicture);

        Session session = Session.getActiveSession();

        WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(mActivity, session, params)).setOnCompleteListener(new OnCompleteListener()
        {
            public void onComplete(Bundle values, FacebookException error)
            {
                if (error == null)
                {
                    // When the story is posted, echo the success
                    // and the post Id.
                    final String postId = values.getString("post_id");
                    if (postId != null)
                    {
                        listenerShareFacebook.onShareFacebookSuccess();
                    }
                    else
                    {
                        // User clicked the Cancel button
                        listenerShareFacebook.onShareFacebookFailure("Publish cancelled");
                    }
                }
                else if (error instanceof FacebookOperationCanceledException)
                {
                    // User clicked the "x" button
                    listenerShareFacebook.onShareFacebookFailure("Publish cancelled");
                }
                else
                {
                    // Generic, ex: network error
                    listenerShareFacebook.onShareFacebookFailure("Error posting story");
                }
            }

        }).build();
        feedDialog.show();
    }
}

此外,上面引用的是我的 Listener 接口,因此我可以通知我的 Activity 与 Facebook 相关的内容:

public interface ListenerShareFacebook
{
    void onShareFacebookSuccess();

    void onShareFacebookFailure(String error);
}
于 2013-04-16T00:14:43.830 回答
2

我真的会推荐这个:

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
         sharingIntent.setType("text/plain");
         sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text");
         sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Title");
         startActivity(Intent.createChooser(sharingIntent, "Share using"));

这不使用 facebook sdk,但确实使用了 facebook 应用程序。在我看来,大多数拥有智能手机和 Facebook 的人都使用这个应用程序,并希望通过这个应用程序分享所有内容。用户也可以点击分享其他内容(推特、短信、g+、电子邮件……)

对我来说,任何 facebook sdk 的最佳替代品。(也可以附上图片)

于 2013-04-15T17:15:32.080 回答