ShareActionProvider不会与Intent分享来自Facebook的文本

时间:2014-11-06 00:47:40

标签: android facebook shareactionprovider

我正在使用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;
    }

谢谢!

2 个答案:

答案 0 :(得分:1)

不幸的是,你无法解决它。 Facebook不处理EXTRA_TEXT字段。您可以查看this bug report page

答案 1 :(得分:1)

有一个中间解决方案。 FB确实没有共享TEXTS。他们说这是对用户表达自由的攻击。但是,你有一个解决方案。您可以传递链接。然后FB翻译&#34; Intent&#34;到图像和链接,它添加到未来的响应。但它留下了用户写作空间的空白...... 例如,尝试:

shareIntent.putExtra(Intent.EXTRA_TEXT, "http://www.google.com");