본문 바로가기

개발/안드로이드 개발

[안드로이드/안드로이드 개발]Intent filter 를 이용한 실행가능 app 목록 얻어오기(Intent.createChooser)

의외로 모르는 사람이 많은 듯 싶어서 정리해둡니다.


기본적으로 인터넷에서 미디어 등을 선택하거나 단말기에 저장된 사진, 동영상 등을 실행 하였을 경우

어떤 app을 이용해서 해당 컨텐츠를 플레이(?)할 것인지 창으 뜨게 되는데 이는 다음과같은 방법으로 구현합니다.


먼저 알아볼 것이 동영상을 플레이 할 경우

보통 

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.parse("비디오 경로"),"video/*");

startactivity(intent);

위와 같은 방법으로 하게 되는데

실행가능한 app 목록을 조회하는 방법도 위의 Intent를 그대로 이용합니다.



좀 급하게 하느라 보기 힘든 면이 없진 않지만 중요한 부분은

PackageManager pm = getPackageManager();

List<ResolveInfo> list = pm.queryIntentActivities(playVideo, PackageManager.GET_META_DATA);

-> 사용할Intent로 실행 가능한 app목록을 조회해오는 부분입니다.

ComponentName cm = new ComponentName((String) data.get(arg2).get("package"), (String) data.get(arg2).get("activity"));

-> 데이터를 보낼때 필요한 부분이라고 합니다.


참고록 apiDemo 에서 보시면 맨 처음 activity목록을 조회해오는 부분이 위와 같은 방식으로 구현되어있으니 참고하시면 도움이 될듯합니다.

위의 목록을 받아오는 부분은 Intent.createChooser 를 이용하시는것과 거의 동일합니다.