안드로이드 개발 질문/답변
(글 수 45,052)
예를 들어 A라는 프로젝트가 있고 B라는 프로젝트가 있을때 A프로젝트의 어플에서 어떤 이벤트를 발생시켜
B프로젝트의 어플을 실행하려면 어떻게 해야 하나요??
방법을 몰라서 혹시나하는 마음에 B프로젝트의 패키지를 A프로젝트로 옮겨서 실행하니 결과는 나왔는데..
찝찝하내요...왠지 프로젝트도 엉망인듯 싶고....
해결 방법 좀 알려주시기 바랍니다.
B프로젝트의 어플을 실행하려면 어떻게 해야 하나요??
방법을 몰라서 혹시나하는 마음에 B프로젝트의 패키지를 A프로젝트로 옮겨서 실행하니 결과는 나왔는데..
찝찝하내요...왠지 프로젝트도 엉망인듯 싶고....
해결 방법 좀 알려주시기 바랍니다.
2009.06.01 13:50:59
Intent i = new Intent("com.androidpub.package", "com.androidpub.package.classname"); <== 이부분을
Intent i = new Intent(this, com.test.aaa.test.class); <==이렇게 썼거든요...그랬더니 2번째 파라미터에서 에러가 나는데요..
다른 프로젝트에 있는 패키진데 위에 처럼 패키지명만 적어서 접근할수 있는건가요??
B프로젝트의 엑티비티를 실행하려고 합니다만..젤 마지막에 다른 부분을 원하시는건가요??라고 쓰셨는데..다른 부분은 어떤게 있나요??
Intent i = new Intent(this, com.test.aaa.test.class); <==이렇게 썼거든요...그랬더니 2번째 파라미터에서 에러가 나는데요..
다른 프로젝트에 있는 패키진데 위에 처럼 패키지명만 적어서 접근할수 있는건가요??
B프로젝트의 엑티비티를 실행하려고 합니다만..젤 마지막에 다른 부분을 원하시는건가요??라고 쓰셨는데..다른 부분은 어떤게 있나요??
2009.06.01 15:08:35
특별히 다른 부분이 있는게 아니라 제가 이해한게 맞는가 해서요. 서로 다른 프로젝트에서는 Class 자체가 접근할수 없기 때문에 문자열로 직접 패키지와 클래스를 적어주는 방법이 맞습니다. 혹은
<intent-filter> <action android:name="androidpub.action.SHOW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>와 같이 AndroidManifest.xml에서 별도의 action을 선언하고
startActivity(new Intent("androidpub.action.SHOW"));와 같이 실행하는 법도 있습니다.
2009.06.01 18:22:09
제가 제대로 한지는 모르겠지만....
A, B프로젝트에 <action android:name="androidpub.action.SHOW" /> <==를 추가했고요
A프로젝트에서 startActivity(new Intent("androidpub.action.SHOW")); <== 이걸 실행했거든요
근데 안되내요..아까와 같은 에러가 나는데요..
java.lang.VerifyError: com.test.main.mainActivity라고 에러메시지가 나오내요..
경고도 아니라 ㅠㅠ
그리고 질문의 의도에서는 벗어났지만..
androidpub.action.SHOW<== 대체 뭔가요??액션에서 SHOW라는 걸 없던데..코드가 직접 치니깐 에러는 안나고...-_-;;
A, B프로젝트에 <action android:name="androidpub.action.SHOW" /> <==를 추가했고요
A프로젝트에서 startActivity(new Intent("androidpub.action.SHOW")); <== 이걸 실행했거든요
근데 안되내요..아까와 같은 에러가 나는데요..
java.lang.VerifyError: com.test.main.mainActivity라고 에러메시지가 나오내요..
경고도 아니라 ㅠㅠ
그리고 질문의 의도에서는 벗어났지만..
androidpub.action.SHOW<== 대체 뭔가요??액션에서 SHOW라는 걸 없던데..코드가 직접 치니깐 에러는 안나고...-_-;;
2009.06.03 10:39:04
회색님 해결했습니다. classname에서 마지막에 .class를 제외한 classname만 적으면 되는거였군요..
설명을 잘 해주셨는데 이해가 많이 늦었습니다.
설명을 잘 해주셨는데 이해가 많이 늦었습니다.
2009.06.04 14:49:52
미라클 님이 다른 글에 댓글 달아주신거 옮겨옮니다.
제가 이해를 못한거지 회색님의 설명이 정확했습니다
예를 들어 패키지의 네임이 com.android.aaa 이고 클레스의 네임이 name.class 라면요
Intent intent = new Intent()
intent.setclass("com.android.aaa", "com.android.aaa.name");
startActivity(intent)라고 하면 com.android.aaa패키지의 name클레스가 실행됩니다.
예를 들어 패키지의 네임이 com.android.aaa 이고 클레스의 네임이 name.class 라면요
Intent intent = new Intent()
intent.setclass("com.android.aaa", "com.android.aaa.name");
startActivity(intent)라고 하면 com.android.aaa패키지의 name클레스가 실행됩니다.
특별히 프로젝트가 같이 있거나 분리되어있거나 크게 상관은 없는 부분일텐데 다른 것을 원하시는 건가요?