마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다중 갤러리선택은 어떻게해야하나요 ?

0 추천
Intent intent = new Intent();
   intent.setType("image/*");
   intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(intent, TAKE_GALLERY);

이런식으로 해봤는데 한개밖에 선택이 되질않습니다.

 

다중 갤러리 선택후 ftp로 보내기(php로처리) 도와주세요ㅜ
익명사용자 님이 2015년 10월 14일 질문
intent 받는부분입니다. 4.4 이상os인데도 multiple을 받지를 못합니다.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == Activity.RESULT_OK) {

            // PictureUri = targetUri.toString();
            switch (requestCode) {
            case TAKE_GALLERY: {
                // 이후의 처리가 카메라와 같으므로 일단 break없이 진행합니다.
                // 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다.
                mImageCaptureUri = data.getData();

                File original_file = CommonUtil.getImageFile(this,
                        mImageCaptureUri);

                if (original_file == null) {
                    Toast.makeText(m_app, R.string.gallery_fetch_error,
                            Toast.LENGTH_SHORT).show();
                    mImageCaptureUri = null;
                    return;
                }

                File copy_file = CommonUtil.createSaveCropFile(m_app,
                        SDCARD_FOLDER);

                mImageCaptureUri = Uri.fromFile(copy_file);
                // File cpoy_file = new File(mImageCaptureUri.getPath());

                // SD카드에 저장된 파일을 이미지 Crop을 위해 복사한다.
                CommonUtil.copyFile(original_file, copy_file);
                m_bPhotoCapture = true;

                m_arrDisPhotoList[m_nSelectedPhotoIndex] = mImageCaptureUri
                        .getPath();
                m_arrCapturedPhotoPath[m_nSelectedPhotoIndex] = mImageCaptureUri
                        .getPath();

                try {
                    onSave();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                break;
            }
받는 부분이 잘못되었네요. 다중선택인 경우 getData()로 받으면 안됩니다.
구글 개발자 사이트의 다중 선택에 설명입니다. getClipData()를 쓰라고 나옵니다

Extra used to indicate that an intent can allow the user to select and return multiple items. This is a boolean extra; the default is false. If true, an implementation is allowed to present the user with a UI where they can pick multiple items that are all returned to the caller. When this happens, they should be returned as the getClipData() part of the result Intent.

1개의 답변

+1 추천
 
채택된 답변

코드상으로는 별 이상이 없어 보입니다. 혹시 사용하신 단말의 OS버전이 어떻게 되나요?

다중 선택은 API18 이상에서만 가능한 것으로 알고 있습니다. 일반적으로 Kitkat(4.4)이상에서만 씁니다.

버전이 낮다면 EXTRA_ALLOW_MULTIPLE 동작하지 않습니다.

cc1232 (35,280 포인트) 님이 2015년 10월 14일 답변
단말기 os 는4.4.4 버전입니다
4.4 밑버전은  다중 이미지 업로드를 어떻게처리하나욤??
API18 미만에서도 다중 업로드를 지원하려면 카톡이나 라인처럼 앱 내에 별도 앨범같은 부분을 작성해서 그걸 호출해야죠. API18 이상에서 다중 선택이 되는건 그 버전 이상에 들어있는 갤러리가 다중선택(EXTRA_ALLOW_MULTIPLE)을 지원하기 때문입니다
...