内容共享 之 增加一个简便的分享按钮

利用前面提到的ActionProvider(android 4.0 ,API 14之上支持)来在ActionBar里面创建一个实用,友好的分享按钮会更加容易一些。ActionProvider,一旦被添加到一个动作条里里面作为一个菜单按钮,会自动实现这个菜单按钮的UI和功能。然后在ShareActionProvider里面,你只需要提供一个要分享的intent,它会处理剩余的工作。

注意:ShareActionProvider仅仅在API 14和之上的版本才支持。

修改菜单声明

在开始使用ShareActionProviders之前,首先要在你的对应菜单资源<item>里面声明android:actionProviderClass这个属性

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_item_share"
        android:showAsAction="ifRoom"
        android:title="Share"
        android:actionProviderClass="android.widget.ShareActionProvider" />
    ...
</menu>


这个声明就表明了这个item的显示和在ShareActionProvider里面的功能。然后,你需要告诉这个provider你要分享的内容。

设置分享的Intent

为了让ShareActionProvider能够工作,你必须给它提供一个分享的intent.这个要分享的intent 和我们之前的在发送分享内容到其他APP里面讲的intent是一样的,如一个ACTION_SEND动作,然后带一些extra数据,如EXTRA_TEXT and EXTRA_STREAM。要指定一个要分享的intent,首先找到你的activity或者Fragment里面使用的菜单资源里面的对应的MenuItem(菜单项)。然后,调用MenuItem.getActionProvider()来获取一个 ShareActionProvider 的实例。使用 setShareIntent()来设置和这个菜单项关联的要分享的intent.


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);
    }
}

你也许只想在创建菜单的时候设置一次这个要分享的intent,也有可能每次UI改变的时候你都想重新设置一次。比方说当你浏览相册的时候,要分享的intent就变成图片类型

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值