Gallery를 호출할 때 Intent에 넣는 String 파라미터는 두가지가 있습니다.
public Intent(String action) {
setAction(action);
}
public Intent(String action, Uri uri) {
setAction(action);
mData = uri;
}
val intent = Intent(Intent.ACTION_PICK)
val intent = Intent(Intent.ACTION_GET_CONTENT)
Android 공식 문서에는 ACTION_GET_CONTENT
를 사용하라고 명시되어있습니다.
ACTION_PICK
는 INTENT.setAction()의 두번째 파라미터에 들어가는 Uri의 값을 명시적으로 지정하여 해당 Uri를 사용하는 앱을 호출할 때 사용합니다.
일반적으로 갤러리 앱을 호출할 때는 사용할 필요가 없습니다.
하지만 ACTION_GET_CONTENT
만 사용해서는 안됩니다.
왜냐하면 startActivityForResult()를 호출하면 갤러리는 열리지만 사용자마자 다양한 갤러리 앱을 가지고 있을 수 있습니다.
사용자는 처음에 어떤 갤러리 앱을 열것인지 선택하고, 디폴트 값으로 설정할 것인지 선택할 수 있습니다. 만약 처음에 포토라는 앱을 선택하고 이후에 다른 갤러리 앱으로 바꾸고 싶다면 설정에 들어가 기본 앱 설정을 변경해야하는 번거로움이 있습니다.
이렇기 때문에, startActivity에 들어가는 intent를 createChooser를 이용하여 사용자에게 선택권을 주는 것이 좋습니다. 이 방법을 사용하면 최근 순으로 사진이 정렬되며, 필요시 메뉴에서 포토를 쓸 것인지, 갤러리를 쓸 것인지, 구글 드라이브에서 가져올 것인지에 대해 선택권을 주고 개발자는 그에 대한 Uri값을 얻어 Path로 변환, 추출하여 업로드 등 작업을 수행하면 됩니다.