0

我正在使用 ShareActionProvider(android.widget.ShareActionProvider) 来分享简单的文本。它适用于 Gmail、WhatsApp 等,但不适用于 Facebook ......

它不共享附加到 Intent 的文本,而只是要求用户写一篇新帖子。

如何解决这个问题?

这是我的代码:

XML:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:id="@+id/action_share"
    android:title="@string/action_share"
    android:showAsAction="always"
    android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>

爪哇:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // Inflate the menu; this adds items to the action bar if it is present.
        inflater.inflate(R.menu.detailfragment, menu);

        // Retrieve the share menu item
        MenuItem share = menu.findItem(R.id.action_share);
        // Get the provider and hold onto it to set/change the share intent.
        mShareActionProvider = (ShareActionProvider) share.getActionProvider();

        // Attach an intent to this ShareActionProvider.  You can update this at any time,
        // like when the user selects a new piece of data they might like to share.
        if (mShareActionProvider != null && mForecastStr != null ) {
            mShareActionProvider.setShareIntent(createShareIntent());
            Log.v(LOG_TAG, "mForecast: " + mForecastStr);
            Log.v(LOG_TAG, "Intent: " + mShareActionProvider);
        } else {
            Log.d(LOG_TAG, "Share Action Provider is null?");
        }
    }


    public Intent createShareIntent() {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_TEXT, mForecastStr);

        return shareIntent;
    }

谢谢!!

4

2 回答 2

1

不幸的是,你无法解决它。Facebook 不处理 EXTRA_TEXT 字段。您可以查看此错误报告页面

于 2015-03-09T04:45:15.983 回答
1

有一个中间解决方案。确实 FB 不共享文本。他们说这是对用户言论自由的攻击。但是,你有一个解决方案。你可以传递一个链接。然后 FB 将“意图”翻译成图片和链接,并将其添加到未来的响应中。但它将用户写作空间留空......例如尝试:

shareIntent.putExtra(Intent.EXTRA_TEXT, "http://www.google.com");
于 2015-05-13T21:44:57.503 回答