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

Android Gallery에서 사진과 동영상을 동시에 보는 방법이 있을까요?

0 추천

안드로이드 카메라로 사진과 동영상을 촬영하여 갤러리에 등록시키고, 또 갤러리에서 읽는 앱을 만들고 있습니다.
갤러리에 등록시키는 것은 그리 어렵지 않게 할 수 있었으나,
문제는 이미 갤러리에 등록된 사진이나 동영상을 읽는 방법인데...

다음과 같이 구현할 수 있습니다. (다른 방법도 많이 있겠지만요)

1. 사진을 읽는 코드

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(MediaStore.Images.Media.CONTENT_TYPE);
// 또는 intent.setType("image/*");
startActivityForResult(intent, REQUEST_PICK);


2. 동영상을 읽는 코드

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(MediaStore.Video.Media.CONTENT_TYPE);
// 또는 intent.setType("video/*");
startActivityForResult(intent, REQUEST_PICK);


문제는 위와 같이 하면, 당연히
첫번째 방법으로는 갤러리에 사진만 보이고,
두번째 방법으로는 갤러리에 동영상만 보인다는 거죠.

이렇게 구분하지 않고 갤러리에 들어가면 사진과 동영상이 같이 보이게끔 하고 싶은데요.
그 방법을 모르겠습니다.
직관적으로 위 코드에서 intent.setType(...);를 없애면 되지 않나 싶어 그렇게도 해보았는데
이번에는 갤러리 애플리케이션이 검색되지 않네요.

위 두 코드가 각각 나름대로는 제대로 동작을 하는 걸로 봐서 갤러리에 사진이나 동영상이 등록은 잘 되어 있다고 보여집니다.

구글링을 하면 위 각각의 방법에 대해서는 무수히 많이 나와 있는데
정작 필요한 '갤러리에 사진과 동영상이 같이 보여지는 방법'에 대해서는 찾지를 못하겠네요.

도움 부탁드립니다.

* 그림이나 동영상은 특정한 path에 있는 것이 아니고, path에 상관없이 갤러리에 등록되어 있는 것이면 무조건 다 보여져야 합니다. 참고로 시스템에서 제공하는 기본 갤러리 앱을 열면 두 가지가 다 보입니다.

cjpno22 (120 포인트) 님이 2020년 7월 4일 질문
cjpno22님이 2020년 7월 6일 수정
해본적이 없어서 그런데 setType 에 ||로 묶거나
intent.setType("image/*");
intent.setType("video/*");
해도 그런가요?
예.
1. "image/*"와 "video/*" 그리고 MediaStore.Images.Media.CONTENT_TYPE와 MediaStore.Video.Media.CONTENT_TYPE는 String 이기 때문에 || 연산자가 적용되지 않는 걸로 알고 있습니다.
그리고 실제 이렇게 코드를 작성하면,
Operator '||' cannot be applied to 'java.lang.String', 'java.lang.String'
라는 에러가 뜹니다.
2. intent.setType("video/*");를 하면 "작업을 수행할 때 사용하는 애플리케이션'을 선택하라는 메시지가 나오고, 갤러리를 선택하면 첫번째의 intent.setType("image/*");가 무시되어 버립니다(즉 두번째 코드로 대치되어 버립니다).
- 기본 갤러리 앱에서는 두 가지가 다 보이는 것을 보면, 영 방법이 없는 것은 아닐 것 같은데 말이죠...

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...