您的位置:首页 > 移动开发 > Android开发

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

2017-01-11 09:13 204 查看
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过滤器为给定的内容类型。
@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)会出现在“共享”图标旁边,这是一个整洁的优化!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息