我正在使用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;
}
谢谢!
答案 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");