반응형
서비스 내 브로드 캐스트 혜택
내에서 시작하려고 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
반응형
'IT' 카테고리의 다른 글
Java 애플리케이션의 악성 코드에 대한 샌드 박스 (0) | 2020.09.14 |
---|---|
Rails에서 테스트 할 때 HTTP_REFERER를 어떻게 설정하나요? (0) | 2020.09.14 |
Heroku의 두 앱간에 데이터베이스 공유 (0) | 2020.09.13 |
사용자에게 Chrome 확장 프로그램이 설치되어 있는지 확인 (0) | 2020.09.13 |
h5py에 대한 입력 및 출력 numpy 배열 (0) | 2020.09.13 |