안드로이드 개발 질문/답변
(글 수 45,052)
http://www.androidpub.com/445351
http://www.androidpub.com/451610
이전에 이런 질문글을 올렸던 적이 있습니다.
다시한번 얘기 하자면 제가 의도하는 바는 리스트에 설치된 어플들 목록을 받아오고 리스트에서 선택하면 해당 어플을 실행하는 방식입니다.
저 질문에 대한 답변을 토대로 조합을 해 성공을 했습니다.
모든 패키지가 아닌 사용자가 사용 가능한 어플들만 필터링 해오기도 성공했고 그 받아온 리스트에서 어플을 구동시키는것 까지 일부 성공했습니다.
근데 여기서 실행되는 어플들이 있고 안되는 어플들도 있네요.
일관성 있게 어느 기준이 있어보이지도 않고...
일단 OS에 기본으로 설치되어 있는 어플들 중에서 카메라, 캠코더, 자세히 알아보기, 빠른설정, 인물검색, 통화기록 등이 아래와 같은 Exception을 일으키며 종료 되어 버립니다.
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.camera/com.android.internal.app.ResolveActivity}; have you declared this activity in your AndroidManifest.xml?
라는 에러가 뜹니다.
다른 실행이 안되는 어플들도 앞에 클래스만 다를 뿐 /com.android.internal.app.ResolveActivity는 항상 붙어다니네요.
AndroidManifest.xml을 건드려야 할거 같은데 이럴 경우 어떻게 수정을 해줘야 할까요?
수정 #1. 사용하는 디버깅 단말기는 HTC Desire입니다. 해당 오류를 뿌려주는 앱들은 전부 htc에서 만들어서 넣어준 패키지들이네요...
2010.06.22 14:41:26
AndroidManifest.xml에 실행될 Activity에 대해 명시를 해줘야 하는건 저도 알고 있습니다만.. 지금 같은 경우처럼 외부 패키지를 실행 시키면서 AndroidManifest에 특별한 사항을 기재한적이 없었는데도 잘 됐었거든요..
게다가 저기에 안된다고 올린 어플 목록 외의 다른 SMS, 인터넷, 계산기 처럼 기본적으로 깔려 있는 어플들 포함, 기타 제가 다운 받았던 어플들은 아무 문제없이 실행이 됩니다. 유독 실행 안되는 저 어플들은 보니 같은 패키지를 intent Action을 다르게 줌으로써 다른 형태로 실행 시키는듯 하더군요. 이럴 경우엔 어찌 할 수 있는 방법이 없을까요?
혹시 제가 저런 목록을 기기 별로 일일히 체크하면서 예외사항을 처리할 수 밖에 없는걸까요?
2010.06.22 15:17:15
Context.registerReceiver() 로 등록되면 AndroidManifest.xml intent-filter 부분에 등록을 안시켰기 때문에 호출이 불가합니다. 이부분을 확인해 보시면 좋을거 같고요.. intent-filter 와 Component 을 키워드로 서치 하셔서 intent 등록정보를 케 오는것도 찾아보시면 좋을거 같고요..(전 해보진 않았음 ㅎ) 그리고 마지막으로 같은 인텐트로 액션을 할 수 있는지. queryBroadcastReceivers() 으로 패키지네임을 확인해 보세요~!!