안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
지금 저는 액션을 날려서 특정 엑티비티를 실행하려고 하고있습니다
액션을 날리려는 이유는 제 어플이 아닌 다른 어플에서도 실행가능 하게 하고싶어서 입니다.
상황은 이렇습니다
엑티비티 A
엑티비티 B
엑티비티 C
브로드케스트리시버 R
스트링 상수 A
스트링 상수 B
[상황1]
A 엑티비티에서 B 를 열기위해 Intent 를 생성했습니다
Intent intent = new Intent(경로.A);
mcontext.startActivity(intent);
다음과 같은 방법으로 액션을 만들어 던졌습니다.
메니페스트에는 다음과같이 해당 엑티비티에 인텐트 필터를 주었습니다.
<activity android:name=".엑티비티B">
<intent-filter>
<action android:name="상수A의 내용" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
[결과]
엑티비티 B는 인텐트를 받아 엑티비티 B 가 create 됩니다.
[상황2]
같은 방법으로 하면되리라 생각하였습니다.
엑티비티 C에서 다음과 같은 작업을 하였습니다
<--인텐트생성-->
Intent intent = new Intent(스트링상수 B); <-액션
<--펜딩인텐트생성-->
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 1);
<--알란매니저 가져옴-->
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
<--달력 가져옴-->
Calendar calendar = Calendar.getInstance();
<--시간으로 설정--> <- 없어도 될듯합니다..
calendar.setTimeInMillis(java.lang.System.currentTimeMillis());
<--5초 증가-->
calendar.add(Calendar.SECOND, 5);
<--알람매니저 등록-->
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
다음과 같이 하였을때 원하는 작업을 할수없었습니다.
인텐트 필터는
혹시나 하여 리시브에도 걸고 엑티비티 C에도 걸었습니다만 동작하지 않았습니다.
상황 2의 Intent intent = new Intent(스트링상수 B); 부분을
Intent intent = new Intent(컨텍스트 , 리시버R.class) 로 바꿔보았습니다.
리시버가 인텐트를 받아 동작합니다.
다시
상황 2의 Intent intent = new Intent(스트링상수 B); 부분을
Intent intent = new Intent(컨텍스트 , 엑티비티C.class) 로 바꿔보았습니다.
동작하지 않습니다.
[상황1] 과 다른 부분은 스타트엑티비티가 없는것인데......어휴..
액션만으로 조금전 상황처럼 팬딩인텐트, 알람매니저를 사용하여 처리를 하는 방법을 도와주시면 감사하겠습니다
부탁드립니다



