【问题标题】:Sharing Content On FaceBook Android在 Facebook Android 上共享内容
【发布时间】:2012-11-22 02:56:02
【问题描述】:

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

这是我用的:

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

【问题讨论】:

    标签: android facebook android-intent sharing


    【解决方案1】:

    我所做的实际上是拦截 Intenthandler 的选定目标,您可以使用您的 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;
        }
    

    【讨论】:

      【解决方案2】:

      根据 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,根据您的帖子,您已经能够成功。这是唯一可用的选项(很遗憾)。

      【讨论】:

      • 好的,但我希望用户使用 facebook SDK 定向到我的自定义 facebook 共享,我如何检测用户点击 facebook 而不是 Gmail !那么如果它的 facebook 我可以轻松地做我想做的事
      • @MahdiGiveie:您希望用户从他们可以共享的应用程序列表中选择您的应用程序?
      • 不是我的应用!!我希望用户从应用程序列表中单击 Facebook 时可以直接共享到我的自定义 Facebook 共享!我的问题是如何检测到用户从列表中点击了 facebook?
      • @MahdiGiveie:我无法检测到用户选择了哪个应用程序。我建议您实现自己的应用来分享内容。
      【解决方案3】:

      在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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多