如何在Contextual Action Bar中使用ShareActionProvider共享多个文件?

时间:2014-11-02 18:32:58

标签: android contextual-action-bar shareactionprovider

我的Activity中有一个ListView。在长按该列表视图后,我打开了上下文操作栏。它有一个共享选项,可以通过gmail / whatsapp /等共享列表中的选定项目(可以选择多个项目)。

<item android:id="@+id/menu_share" android:title="Share" android:icon="@android:drawable/ic_menu_share" android:actionProviderClass="android.widget.ShareActionProvider" app:showAsAction="ifRoom" />

这是菜单布局文件中的“共享”选项。

我有一个实现ActionMode.Callback的类来处理上下文操作栏及其图标。

我在覆盖onCreateActionMode(ActionMode mode, Menu menu)内为Share菜单项初始化了一个ShareActionProvider对象。

mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider();

我的列表视图包含文件名。 我的要求是,如果用户在列表视图中选择多个项目(首先长按,然后按正常按进行连续选择),我应该能够共享所有这些文件。

我正在使用下面这样的意图(listview中对应于文件名的所有文件都是audio-amr文件)。

Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uriList);
shareIntent.setType("audio/AMR");

这里,uriList是Uris的ArrayList。现在我应该在哪里调用方法mShareActionProvider.setShareIntent(intent);

我无法在onCreateActionMode(ActionMode mode, Menu menu)中调用它,因为用户可能会在第一次长按后在列表中选择更多项目。

如果我直接在onActionItemClicked(ActionMode mode, MenuItem item)中调用它,我的共享图标似乎处于非活动状态。

如果我使用相同的意图在onCreateActionMode(ActionMode mode, Menu menu)onActionItemClicked(ActionMode mode, MenuItem item)中调用它,则共享意图似乎不会更新。请帮助..

1 个答案:

答案 0 :(得分:0)

  

我无法在onCreateActionMode(ActionMode模式,菜单菜单)中调用它,因为用户可能会在第一次长按后在列表中选择更多项目。

尝试在那里调用它,但在onItemCheckedStateChanged()中再次调用 ,当检查项的混合发生变化时,提供一个新的Intent,其中包含更新的附加内容。< / p>