在FaceBook Android上共享内容

时间:2012-11-22 02:56:03

标签: android facebook android-intent sharing

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

这就是我使用的:

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

3 个答案:

答案 0 :(得分:5)

我所做的实际上是拦截所选择的目标操作者的目标,你可以通过使用你的actionprovider来做到这一点。假设你创建了一个带有onclick的项目启动了intent。为此,您可以实例化一个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。 当然,actionrpovider需要有一个意图。 (就像你想要有意图一样)。我使用下面的方法来创建意图。

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

答案 1 :(得分:4)

根据Facebook的平台政策,您无法使用预填充共享对话框 Intent.EXTRA_TEXT。它通常被认为是一个错误,但根据提交的here以及here的错误报告,Facebook明确提到情况并非如此(这不是错误)。

您可以详细了解他们的Platform Policies平台政策IV.2

引用平台政策IV.2:

  

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

     

这些字段供用户表达自己。预灌装   这些领域侵蚀了用户声音的真实性。

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

答案 2 :(得分: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