내 활동에 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을 구현 한 클래스를 사용하여 상황에 맞는 작업 표시 줄과 해당 아이콘을 처리 할 수 있습니다.
공유 메뉴 항목의 재정의 된 onCreateActionMode(ActionMode mode, Menu menu)
안에 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)
모두를 호출하면 공유 인 텐트가 업데이트 된 것처럼 보이지 않습니다.
MultichoiceModeListener 및 해당 OnItemCheckedStateChanged()를 사용하지 않고이 ShareActionProvider를 구현할 수 있습니까? 왜냐하면, 나는 ActionMode.CallBack 만 사용하고 MultiChoiceModeListener를 사용하지 않고 여러 항목을 '삭제'했습니다. –
감사합니다. listview에 MultichoiceModeListener를 사용하고 onItemCheckedStateChanged()에 새 Intent를 작성하여 원하는 항목을 얻을 수있었습니다. ShareActionProvider 객체의 ShareIntent로 설정합니다. –