Android应用最值得称赞的一点是应用之间可以共享数据,而这个功能在我们日常的开发过程中也是常用的,那就是我们的分享功能,简单的分享数据可以通过一个意图,而在Android4.0之后Android官方提供了一个ShareActionProvider这个类,下面就说一下再用这个类的时候需要注意的地方:
1.首先在menu中定义xml代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item
android:id="@+id/menu_item_share"
app:showAsAction="ifRoom"
android:title="share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
/>
</menu>
在menu目录下的item中添加actionProviderClass这个属性。这个属性里面放ShareActionProvider这个类,而这里面有两种形式,一种是Android包中的,一种是v7包中的,我们这里应该放入v7包中的,同时需要改变这个属性前面的命名空间,改为app,当然应该先申明。
2.在代码中设置一下代码
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate menu resource file.
getMenuInflater().inflate(R.menu.share_menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
// Return true to display menu
return true;
}
// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
这里注意shareActionProvider应该是v7包中的,不然会报错。
我们可以自己设置一个意图指定action和type,然后调用setShareIntent()方法区设置就ok了。最后效果图如下: