티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

android pick images from gallery

안드로이드 갤러리에서 이미지 선택

 문제 내용 

I want to create a picture chooser from gallery. I use code

저는 갤러리에서 이미지 선택기를 만들고 싶습니다. 저는 아래 코드를 사용합니다.
 intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
 startActivityForResult(intent, TFRequestCodes.GALLERY);

 

My problem is that in this activity and video files are displayed. Is there a way to filter displayed files so that no video files will be displayed in this activity?

문제는 이 액티비티에서 비디오 파일이 표시된다는 것입니다. 이 액티비티에서 비디오 파일이 표시되지 않도록 표시된 파일을 필터링하는 방법이 있을까요?

 

 

 

 높은 점수를 받은 Solution 

Absolutely. Try this:

있습니다! 다음을 수행하세요:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

 

Don't forget also to create the constant PICK_IMAGE, so you can recognize when the user comes back from the image gallery Activity:

상수 PICK_IMAGE를 생성하는 것도 잊지 마세요. 그러면 사용자가 이미지 갤러리 액티비티에서 돌아올 때를 인식할 수 있습니다.
public static final int PICK_IMAGE = 1;

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == PICK_IMAGE) {
        //TODO: action
    }
}

 

That's how I call the image gallery. Put it in and see if it works for you.

그것이 제가가 이미지 갤러리를 부르는 방법입니다. 그것을 넣고 그것이 당신에게 효과가 있는지 보세요.

 

EDIT:

편집:

 

This brings up the Documents app. To allow the user to also use any gallery apps they might have installed:

그러면 문서 앱이 나타납니다. 사용자가 설치한 갤러리 앱도 사용할 수 있도록 하려면:
    Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT);
    getIntent.setType("image/*");

    Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    pickIntent.setType("image/*");

    Intent chooserIntent = Intent.createChooser(getIntent, "Select Image");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {pickIntent});

    startActivityForResult(chooserIntent, PICK_IMAGE);

 

 

 가장 최근 달린 Solution 

Since startActivityForResult() is depracated we can choose only image from gallery in the following way using ActivityResultLauncher:

startActivityForResult()가 지원 중단 되었으므로 ActivityResultLauncher를 사용하여 갤러리에서 이미지만 선택할 수 있습니다:

 

At first we need to define an ActivityResultLauncher<String[]> and initialize it in onCreate() (for Activities) or onViewCreated() (for fragments)

처음에는 ActivityResultLauncher<String[]>을 정의하고 onCreate()(액티비티의 경우) 또는 onViewCreated()(프래그먼트의 경우)에서 초기화해야 합니다.
        ActivityResultLauncher<String[]> galleryActivityLauncher = registerForActivityResult(new ActivityResultContracts.OpenDocument(), new ActivityResultCallback<Uri>() {
            @Override
            public void onActivityResult(Uri result) {
                if (result != null) {
                    // perform desired operations using the result Uri
                } else {
                    Log.d(TAG, "onActivityResult: the result is null for some reason");
                }
            }
        });

 

Let's say we need to open the gallery when submitButton is clicked.

submitButton을 클릭했을 때 갤러리를 열어야 한다고 가정해 보겠습니다.

 

So inside the onClickListener we need to call

그래서 우리는 onClickListener 안에서 우리는 호출해야 합니다.
galleryActivityLauncher.launch(new String[]{"image/*"});

 

The trick here is the argument for launch(). By adding "image/*" to the argument array, we are specifying that the file explorer should load images only.

여기서 요령은 launch()에 대한 인수입니다. 인수 배열에 "image/*"를 추가하여 파일 탐색기가 이미지만 로드하도록 지정합니다.

 

 

 

출처 : https://stackoverflow.com/questions/5309190/android-pick-images-from-gallery

반응형
댓글
공지사항
최근에 올라온 글