9

任何尝试通过 Android 分享到 Facebook 的人都知道,Facebook 团队决定忽略分享协议并忽略分享意图中提供的文本(请参阅:通过 ACTION_SEND 从 Android 应用程序在 Facebook 上分享文本

然而,推特应用似乎已经想出了如何规避这一点。当您查看推文时:

推特视图

您可以单击推文下方的共享图标,它会打开带有应用程序列表的正常共享对话框,包括 Facebook:

所有的分享图标,包括决定让 Android 开发者陷入困境的 Facebook

如果你点击 Facebook,你会得到这个视图:

该死的脸书。 该死的你。

这看起来很完美,显然 twitter 发送的不仅仅是其他答案似乎提出的链接。此外,如果您分享到消息传递:

很好的旧消息应用程序。 F___脸书

您可以看到文本已正确添加并且没有问题。推特是如何让它发挥作用的?

4

3 回答 3

0

如果您询问如何在从另一个应用程序共享到 Facebook 的链接时包含预填充文本,这实际上直接违反了 Facebook 的政策 -

“确保用户消息参数中的所有内容都是由用户输入的。不要预先填写。这包括帖子、消息、评论和标题。” (https://developers.facebook.com/policy/

于 2014-05-05T04:39:13.853 回答
0

我为解决这个问题所做的有点讨厌但很有用,

复制要在剪贴板中共享的文本,然后

吐司消息“粘贴文本”,

复制到剪贴板

@SuppressLint("NewApi")
private void copyToClipBoard(String data) 
{
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) 
    {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
        clipboard.setText(data);
        Toast.makeText(context,"Paste text", Toast.LENGTH_SHORT).show();
    }
    else 
    {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); 
        android.content.ClipData clip = android.content.ClipData.newPlainText(type,data);
        clipboard.setPrimaryClip(clip);
        Toast.makeText(context, "Paste text", Toast.LENGTH_SHORT).show();
    }

}
于 2014-05-08T06:31:51.827 回答
0

只是为了结束这个问题,我相信它在示例中适用于 Twitter 的方式是基于提供的 url 中可用的元数据。这是一个很好的起点:https ://developers.facebook.com/docs/sharing/best-practices#tags

于 2015-03-20T16:12:14.013 回答