Android 系列 6.6向操作栏添加共享操作

来源:互联网 发布:拖欠淘宝贷款 编辑:程序博客网 时间:2024/05/09 00:05
6.6向操作栏添加共享操作
问题
您要将标准“共享”图标添加到操作栏,并使其处理应用程序提供的Intent。

使用菜单项中的actionProviderClass属性,设置一个Intent来处理,并将Intent传递给ActionProvider。它真的是那么简单!
讨论
共享信息是移动和计算设备的规范使用之一。让一个应用程序使用另一个应用程序来处理数据是Android平台的主要功能。 Android提供了一个“共享”菜单,允许您将文本,图像或几乎任何其他内容传递到任何要处理的应用程序。
例如,让我们来看看如何将一个短字符串导出(共享)为“纯文本”;这将被共享到(可接受)相当多的应用程序,但Android将选择“最受欢迎”放在共享菜单的顶部。
我们首先添加一个将进入ActionBar的菜单项。
<menu xmlns:android="http://schemas.android.com/apk/res/android” ><item android:id="@+id/menu_item_share"android:showAsAction="ifRoom"android:title="@string/action_share"android:actionProviderClass="android.widget.ShareActionProvider" />...</menu>


在我们的onCreate()方法中,我们创建一个具有ACTION_SEND操作的Intent,一个纯文本的内容类型,以及我们想要共享的字符串的Extra。没有什么特别的文本 - 这种机制可以共享几乎任何类型的数据,只要有至少一个应用程序注册了Intent过滤器为给定的内容类型。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mShareIntent = new Intent();mShareIntent.setAction(Intent.ACTION_SEND);mShareIntent.setType("text/plain");mShareIntent.putExtra(Intent.EXTRA_TEXT, "From me to you, this text is new.");}

最后,在我们的菜单创建方法中,我们通过它的ID找到MenuItem,请求它的ActionProvider(这是需要API级别14的地方);如果我们发现,我们只是添加共享意向吧!
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);// Find the MenuItem that we know has the ShareActionProviderMenuItem item = menu.findItem(R.id.menu_item_share);// Get its ShareActionProvidermShareActionProvider = (ShareActionProvider) item.getActionProvider();// Connect the dots: give the ShareActionProvider its Share Intentif (mShareActionProvider != null) {mShareActionProvider.setShareIntent(mShareIntent);}// Return true so Android will know we want to display the menureturn true;}

这真的是所有的。
当我们第一次运行应用程序,它看起来像这样:


点击共享图标,并显示共享菜单 - 所有的礼貌ShareActionProvider!如上所述,最可能的应用程序在列表的顶部;其余的被委派给“查看全部”部分。


我选择了消息应用程序,就像一个快速现实检查,发送给自己。


消息到达!


请注意,如果您以后返回启动共享的应用程序,如果ActionBar中有空间,则您选择共享的应用程序(在我的例子中为Messaging)会出现在“共享”图标旁边,这是一个整洁的优化!
0 0
原创粉丝点击