使用ShareActionProvider实现分享功能

来源:互联网 发布:迟瑞与知夏圆房视频 编辑:程序博客网 时间:2024/06/14 05:20

      这几天做一个App用到了分享功能,最后用ShareActionProvider实现了,由于是在appcompat-v7使用ShareActionProvider,实现过程中遇到了几个坑,在此记录一下,方便以后查看。

1、首先在菜单xml文件中添加ShareActionProvider的item:
<item
android:id="@+id/menu_item_share"
app:showAsAction="ifRoom"
android:title="Share"
app:actionProviderClass=
"android.support.v7.widget.ShareActionProvider"/>
2、在Activity中定义ShareActionProvider:
privateShareActionProvider mShareActionProvider;

注意到导入的包是:importandroid.support.v7.widget.ShareActionProvider, 与xml文件中保持一致。

3、在onCreateOptionsMenu()中获取ShareActionProvider,并设置Intent:

@Override
public booleanonCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);

// Fetch and store ShareActionProvider
// mShareActionProvider = (ShareActionProvider) item.getActionProvider();
mShareActionProvider=(ShareActionProvider)MenuItemCompat.getActionProvider(item);
Intent sendIntent =newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,news.link);
sendIntent.setType("text/plain");
setShareIntent(sendIntent);
// Return true to display menu
return true;
}

//Call to update the share intent
private voidsetShareIntent(Intent shareIntent) {
if(mShareActionProvider!=null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
注意:在获取ShareActionProvider时使用的是MenuItemCompat.getActionProvider(item)方法,官网给出的方法是item.getActionProvider(),但在v7包中使用ShareActionProvider这种方法不可行,
StackOverflow上有人给出的方法使用MenuItemCompat.getActionProvider(item),详情请参考:http://stackoverflow.com/questions/27887716/exception-this-is-not-supported-use-menuitemcompat-getactionprovider

最后效果:


2 0
原创粉丝点击