我在我的Activity中有一個ListView。長按列表視圖,我打開了上下文操作欄。它有一個共享選項,可以通過gmail/whatsapp /等共享列表中選定的項目(可以選擇多個項目)。如何在上下文操作欄中使用ShareActionProvider共享多個文件?
<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來處理上下文操作欄及其圖標。
我初始化ShareActionProvider對象,在共享菜單項的覆蓋onCreateActionMode(ActionMode mode, Menu menu)
內。
mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider();
我的列表視圖由文件名組成。 我的要求是,如果用戶在列表視圖中選擇多個項目(第一次長按,然後正常按連續選擇),我應該能夠共享所有這些文件。
我正在使用下面的這種意圖(對應於列表視圖中的文件名的所有文件都是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)
中調用它,共享意圖似乎沒有更新。請幫助..
不使用MultichoiceModeListener和它的OnItemCheckedStateChanged()是不可能實現這個ShareActionProvider?因爲,我已經通過使用ActionMode.CallBack而不是任何MultiChoiceModeListener來實現'刪除'多個項目。 – 2014-11-03 16:39:35
謝謝,我能夠通過使用MultichoiceModeListener爲listview創建新的Intent,並在onItemCheckedStateChanged()和將其設置爲ShareActionProvider對象的ShareIntent。 – 2014-11-03 17:39:47