IT

서비스 내 브로드 캐스트 혜택

lottoking 2020. 9. 14. 21:21
반응형

서비스 내 브로드 캐스트 혜택


내에서 시작하려고 BroadcastReceiver합니다 Service. 내가 수신 한 수신 service문자 메시지를 수집하고 수신 전화를 기록 하는 백그라운드를 실행 하는 것입니다. 이 문제를 해결하는 가장 좋은 방법은 service둘 중 하나를 분류 할 수있는 브로드 캐스트를 통합하는 실행을하는 것입니다.

어떻게해야합니까? 이미 서비스를 실행하고 있습니다.


서비스가 이미 설정되어있는 서비스에 broadcast receiver를 추가하기 만하면됩니다.

private final BroadcastReceiver receiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if(action.equals("android.provider.Telephony.SMS_RECEIVED")){
        //action for sms received
      }
      else if(action.equals(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED)){
           //action for phone state changed
      }     
   }
};

귀하의 서비스에서 다음을 onCreate수행하십시오.

IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.addAction(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED);
filter.addAction("your_action_strings"); //further more
filter.addAction("your_action_strings"); //further more

registerReceiver(receiver, filter);

그리고 귀하의 서비스에서 onDestroy:

unregisterReceiver(receiver);

그리고에서 언급 한 필터에 대한 방송을 수신하는 것이 onCreate좋습니다. 필요한 경우 권한을 추가해야합니다. 예를 들어

<uses-permission android:name="android.permission.RECEIVE_SMS" />

더 나은 패턴은 독립형 BroadcastReceiver. 이렇게하면 앱 Service이 실행 중인지 여부에 관계없이 브로드 캐스트 캐스트에 응답 할 수 있습니다 . 실제로이 패턴을 사용하면 실행될 필요가 Service전혀 없습니다.

BroadcastReceiver매니페스트에 등록하고 별도의 클래스 / 파일을 만듭니다.

예 :

<receiver android:name=".FooReceiver" >
    <intent-filter >
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

메시지가 실행되면 Intent( Bundle)를 전달 Service하고 응답합니다 onStartCommand().

예 :

public class FooReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // do your work quickly!
        // then call context.startService();
    }   
}

참고 URL : https://stackoverflow.com/questions/9092134/broadcast-receiver-within-a-service

반응형