[Android]ACTION_OPEN_DOCUMENTを使って複数選択を行う

Intent.ACTION_OPEN_DOCUMENTを使用して複数ファイル選択を行うときは、Intent.EXTRA_ALLOW_MULTIPLEをセットします。コードでは以下のようになります。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
String title = "Select multiple images";
Intent chooser = Intent.createChooser(intent, title);
startActivityForResult(chooser, CHOSE_FILE_CODE);

上記のコードで、以下のActivityが起動します。画像を長押しで複数選択できるようになります。

ファイルの取得は以下のように行います。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
	if(resultCode != RESULT_OK)return;
	if (requestCode != CHOSE_FILE_CODE) return;

	if (data.getData() != null) {
		getActivity().getContentResolver().takePersistableUriPermission(data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION);
	} else {
		ClipData clipData = data.getClipData();
		int clipItemCount = clipData.getItemCount();
		for (int i = 0; i < clipItemCount; i++) {
			ClipData.Item item = clipData.getItemAt(i);
			Uri itemUri = (item != null) ? item.getUri() : null;
			getActivity().getContentResolver().takePersistableUriPermission(itemUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
		}
	}
}

0 件のコメント :

コメントを投稿