Android 系列 6.6向操作栏添加共享操作
2017-01-11 09:13
204 查看
6.6向操作栏添加共享操作
问题
您要将标准“共享”图标添加到操作栏,并使其处理应用程序提供的Intent。
解
使用菜单项中的actionProviderClass属性,设置一个Intent来处理,并将Intent传递给ActionProvider。它真的是那么简单!
讨论
共享信息是移动和计算设备的规范使用之一。让一个应用程序使用另一个应用程序来处理数据是Android平台的主要功能。 Android提供了一个“共享”菜单,允许您将文本,图像或几乎任何其他内容传递到任何要处理的应用程序。
例如,让我们来看看如何将一个短字符串导出(共享)为“纯文本”;这将被共享到(可接受)相当多的应用程序,但Android将选择“最受欢迎”放在共享菜单的顶部。
我们首先添加一个将进入ActionBar的菜单项。
在我们的onCreate()方法中,我们创建一个具有ACTION_SEND操作的Intent,一个纯文本的内容类型,以及我们想要共享的字符串的Extra。没有什么特别的文本 - 这种机制可以共享几乎任何类型的数据,只要有至少一个应用程序注册了Intent过滤器为给定的内容类型。
最后,在我们的菜单创建方法中,我们通过它的ID找到MenuItem,请求它的ActionProvider(这是需要API级别14的地方);如果我们发现,我们只是添加共享意向吧!
这真的是所有的。
当我们第一次运行应用程序,它看起来像这样:
点击共享图标,并显示共享菜单 - 所有的礼貌ShareActionProvider!如上所述,最可能的应用程序在列表的顶部;其余的被委派给“查看全部”部分。
我选择了消息应用程序,就像一个快速现实检查,发送给自己。
消息到达!
请注意,如果您以后返回启动共享的应用程序,如果ActionBar中有空间,则您选择共享的应用程序(在我的例子中为Messaging)会出现在“共享”图标旁边,这是一个整洁的优化!
问题
您要将标准“共享”图标添加到操作栏,并使其处理应用程序提供的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过滤器为给定的内容类型。
@Override protected 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的地方);如果我们发现,我们只是添加共享意向吧!
@Override public 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 ShareActionProvider MenuItem item = menu.findItem(R.id.menu_item_share); // Get its ShareActionProvider mShareActionProvider = (ShareActionProvider) item.getActionProvider(); // Connect the dots: give the ShareActionProvider its Share Intent if (mShareActionProvider != null) { mShareActionProvider.setShareIntent(mShareIntent); } // Return true so Android will know we want to display the menu return true; }
这真的是所有的。
当我们第一次运行应用程序,它看起来像这样:
点击共享图标,并显示共享菜单 - 所有的礼貌ShareActionProvider!如上所述,最可能的应用程序在列表的顶部;其余的被委派给“查看全部”部分。
我选择了消息应用程序,就像一个快速现实检查,发送给自己。
消息到达!
请注意,如果您以后返回启动共享的应用程序,如果ActionBar中有空间,则您选择共享的应用程序(在我的例子中为Messaging)会出现在“共享”图标旁边,这是一个整洁的优化!
相关文章推荐
- Android---添加一个共享操作
- Google Android开发者文档系列-创建有内容分享特性的应用之添加一个简单的共享action
- Android官方文档---添加一个共享操作
- Android---添加一个共享操作
- SCVMM系列之一——日常操作(添加主机,添加可服务器,添加库共享)
- android定制化软件修改或添加按键驱动的核心操作步骤讲解
- Android系列教程(六) adb操作命令详解
- Linux上添加udev规则使adb可以操作Android设备的注意问题
- Android深入探究笔记之十 -- 使用 ContentProvider 共享数据(二),访问与添加通讯录
- android图像处理系列之五--给图片添加边框(中)
- 完美解决Android在listview添加checkbox实现单选多选操作问题
- Android系列教程(六) adb操作命令详
- Asp.net MVC2.0系列文章-添加操作
- Android深入浅出系列之Bluetooth—蓝牙操作(一)
- Android深入浅出系列之Bluetooth—蓝牙操作(二)
- My Silverlight系列(2)——绝对定位下的控件动态添加操作
- Asp.net MVC2.0系列文章-添加操作
- Android系列教程adb操作命令详解