我想知道更新用户 Facebook 状态的最简单方法。我想简单地显示一个“分享”按钮。当用户触摸“分享”时:
如果他们已经登录到 Facebook,将出现一个对话框,让他们可以选择在提交到 Facebook 之前编辑他们的帖子。
如果他们尚未登录 Facebook,将提示他们登录,然后在成功登录后自动显示共享对话框。
有没有一种简单的方法可以做到这一点,还是我需要实现一个单独的 facebook 登录流程?
我想知道更新用户 Facebook 状态的最简单方法。我想简单地显示一个“分享”按钮。当用户触摸“分享”时:
如果他们已经登录到 Facebook,将出现一个对话框,让他们可以选择在提交到 Facebook 之前编辑他们的帖子。
如果他们尚未登录 Facebook,将提示他们登录,然后在成功登录后自动显示共享对话框。
有没有一种简单的方法可以做到这一点,还是我需要实现一个单独的 facebook 登录流程?
所以我认为我有一个非常干净的方法来做到这一点。我欢迎任何意见。
我正在发布我的整个 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);
}
我真的会推荐这个:
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 的最佳替代品。(也可以附上图片)