안드로이드 개발 질문/답변
(글 수 45,052)
요즘 카카오톡을 보시면 별도의 테마 APK 설치를 통하여 적용이 가능하다는건 모두 아실겁니다 ^^
그런데 문득 궁금해 진것이 있는데요..
원본 카카오톡 어플이 설치되어 있고, 테마 패키지만 설치(내부에는 리소스 밖에 없더군요.. )한 후, 이를 원본 카카오톡에서 사용하게 되어 있습니다.
그렇다면 여기서 서로 다른 패키지에 있는 리소스를 어떻게 가져와 원본 카카오톡에서 사용할 수 있는지 궁금해 졌네요..
요즘 제가 작업하는게 어찌보면 비슷한 상황 같기도 해서 이렇게 질문 드립니다.
PS. 친구가 말하길.. "카카오톡에 전화해서 물어봐~" 라고 조언해 주더군요... -_-;;




Resources res = getPackageManager().getResourcesForApplication(패키지명);
Drawable d = res.getDrawable(가져올 이미지 리소스 아이디);
이런식으로 하면 별 다른 퍼미션이 없어도 다른 application의 리소스에 접근할 수 있습니다.
단, 리소스 아이디가 R.drawable.ic_launcher 이런 식으로 한다고 해도 런처 아이콘을 가져올 보장은 없습니다.
왜냐하면 자신의 앱에서 R.drawable.ic_launcher의 값과
다른 앱에서 R.drawable.ic_launcher의 값이 다르기 때문입니다.
(각 각 다른 앱 프로젝트에서 R.java의 실제 참조값을 비교해 보시면 알 것 입니다. )
그래서 카카오톡에서는 테마 앱을 만들 때
무조건 카카오톡에서 사용하는 리소스 아이디와 값을 같게 하기 위해 정해진 틀을 만든 것입니다.
그 틀에서 빼거나 더하면 리소스 아이디가 꼬여서 제대로 이미지나 String을 가져오지 못하지요.