2012-02-08 7 views
1

을 실행하는 브로드 캐스트 리시버에서 개체를 보내는 방법을 나는 새 SMS를안드로이드 : 활동

public class SmsReceiver extends BroadcastReceiver 
{ 
    // reading sms 
    // I want to send the sms text to my main activity 
} 

을 읽고 내 주요 Activity입니다 같은 응용 프로그램에서 다른 클래스가 BroadcastReceiver를 확장하는 클래스가 있습니다. 그래서 새 SMS를 받으면 이미 실행중인 기본 활동에 콘텐츠를 보내고 싶습니다. 어떻게하면됩니까? 나는 몇 가지 코드 샘플 :

답변

1

내가 당신에게 제안 할 수 두 가지 가능성

  1. 활동
  2. 레지스터 내부에이 수신기 내부에 등록되어있는 새로운 수신기이 수신기에서 새로운 방송을 보내 감사 할 것 활동 및

내가 두 번째 옵션이 더 적합

t 것 같다 번거 로움을 줄일 수 그의 활동 수업 내에서 방송 수신기를 등록하는 방법은 다음과 같습니다.

IntentFilter filter = new IntentFilter(); 

public void onResume(){ 
    filter.addAction("action_string_1"); 
    filter.addAction("action_string_2"); 

    registerReceiver(receiver, filter); 
} 

public void onPause(){ 
    unregisterReceiver(receiver); 
} 

BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      if(action.equals("action_string_1")){ 
       //do something here 
      } 
      else if(action.equals("action_string_2")){ 
       //do somethign here 
      } 
     } 
    }; 
+0

클래스 내부에있는 BroadcastReceiver를 등록하는 방법은 무엇입니까? 지금은 그런 일이 "<수신기 안드로이드 : 이름 ="agent.contactsearcher.SmsReceiver "> <의도 필터> <액션 안드로이드 : 이름 = "android.provider.Telephony.SMS_RECEIVED "/> "하지만 내 활동 내에서는 수업을 진행하지 않습니다. 또 다른 것은 내가 별도의 수업을 2 개 가지고있을 때 방송 수신기가 앱을 종료 한 후에 작동한다는 것입니다. 앱 내부에서 동일한 작업을 수행할까요? – JavaEverywhere

+0

아니요, 활동 클래스에 브로드 캐스트 리시버를 등록하려면 매니페스트에 리시버를 포함 할 필요가 없습니다. 이 질문에 답변 해 주셔서 감사합니다. – waqaslam

+0

감사합니다. 당신은 저를 많이 도와 주셨습니다. 두 번째 BroadcastReceiver를 사용하기로 결정 했으므로 앱이 닫힐 때도 SMS를받을 수 있습니다. – JavaEverywhere