Android---添加一个共享操作

本文译自:http://developer.android.com/training/sharing/shareaction.html

在你的ActionBar中实现一个有效的且对用户友好的共享操作,甚至比在Android4.0(API Level 14)中引入的ActionProvider更加容易。ActionProvider一旦跟操作栏中的一个菜单项绑定,该菜单项会处理的外观和行为。在ShareActionProvider中,你提供一个共享的Intent对象,其他事情都会由ShareActionProvider来处理。

注意:ShareActionProvider在API Level 14以后有效。

更新菜单声明

要使用ShareActionProviders,就在你菜单资源文件中给对应的<item>元素定义android.actionProviderClass属性:

<menuxmlns: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>

这种委托负责该菜单项的外观和功能。但是你需要告诉该提供器你要共享的内容。

Android---添加一个共享操作_第1张图片

1.图库(Gallery)应用中的ShareActionProvider

设置共享的Intent对象

为了让ShareActionProvider指向一个功能,你必须给他提供一个共享的Intent对象。这个共享的Intent对象应该跟“把内容发送给其他应用程序”一课中介绍的相同,它带有ACTION_SEND操作,以及通过EXTRA_TEXT和EXTRA_STREAM附加属性设置的额外数据。要跟一个共享的Intent对象相关联,首先要找到你的Activity或Fragment对象填充菜单时多对应的MenuItem对象。接下来调用MenuItem.getActionProvider()方法来获取一个ShareActionProvider对象实例。使用setShareIntent()方法来更行跟操作项关联的共享的Intent对象。例如:

privateShareActionProvider 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会在照片间切换时发生变化。

有关ShareActionProvider对象的详细讨论,请看Action Bar指南。

 

 

你可能感兴趣的:(Android---添加一个共享操作)