5

我使用 intent 和 Action.SEND 在 WhatsApp、twitter、Facebook 和 GMail 等社交网络上分享我的自定义消息。Gmail 和除 Facebook 以外的其他应用程序一切正常!如何自定义代码以在 Facebook 上分享内容?我确实使用 Facebook SDK 在 Facebook 上分享,但我想使用意图来做到这一点。

这就是我使用的:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp");

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle);
sendIntent.setType("*/*");
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article"));
4

3 回答 3

5

我所做的实际上是拦截意图处理程序的选定目标,您可以使用您的 actionprovider 来做到这一点。假设您创建了一个通过 onclick 启动意图的项目。为此,您可以实例化一个 actionprovider 来执行此操作。这个 actionprovider 可以有一个 setOnShareTargetSelectedListener 来拦截您想要以不同方式处理的任何意图(或根本不处理 ^^)。请参阅下面的代码以了解如何配置您的 actionprovider。

 actionProvider.setShareIntent(createShareIntent());
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){

        @Override
        public boolean onShareTargetSelected(ShareActionProvider source,
                Intent intent) {
            if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) {
                mfacebooksharer.shareStatus(subject, text);
                  return true;
                }
                return false;
        }

    });

无论何时选择Facebook,我都会使用我的MfaceBookSharer来处理意图并遵循Facebook API。当然,该 actionrpvider 需要有一个意图。(就像你想有目的的工作一样)。我使用下面的方法来创建意图。

 private Intent createShareIntent() {
        intentsetter.setIntentleave(true);
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);          
        return shareIntent;
    }
于 2012-11-28T08:33:04.433 回答
4

根据 Facebook 的平台政策,您不能使用 Intent.EXTRA_TEXT. 它通常被认为是一个错误,但根据此处提交的错误报告以及此处 Facebook 明确提到情况并非如此(这不是错误)。

您可以详细了解他们的平台政策,特别是平台政策 IV.2

引自平台政策 IV.2:

您不得预先填写与以下产品关联的任何字段,除非用户在工作流程的早期手动生成内容:流故事(Facebook.streamPublish 和 FB.Connect.streamPublish 的 user_message 参数,以及流的 message 参数。发布)、照片(标题)、视频(描述)、注释(标题和内容)、链接(评论)和 Jabber/XMPP。

这些字段旨在让用户表达自己。预先填写这些字段会削弱用户语音的真实性。

您可以从您的应用程序分享故事的唯一方法是集成 Facebook SDK,根据您的帖子,您已经能够成功。这是唯一可用的选项(不幸的是)。

于 2012-11-22T06:31:47.780 回答
1

在 Android 中使用 Intent,您可以只分享一个不带文字的链接:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca");
startActivity(Intent.createChooser(intent, "Share with"));

它会工作的。如果你想分享文字和链接,你必须使用 Facebook SDK for Android:https ://github.com/facebook/facebook-android-sdk

于 2012-11-22T03:08:56.340 回答