BroadCastReceiver를 구현하는 방법에 대한 몇 가지 예를 보았습니다. 그러나 보류중인 의도 (예 : 들어오는 전화)에 반응해야하는 서비스를 구현하는 방법은 무엇입니까? 사실 저는 궁금합니다 같은 "문제"가 아니라 활동에서. 분명히 BroadCastReceiver를 확장 할 수 없도록 서비스 또는 활동을 확장하는 클래스가 있습니다. "플랫폼 인식"서비스를 만들 수없는 것처럼 보입니다. 액티비티?서비스와 BroadCastReceiver
9
A
답변
12
를 호출 할 수있는 이벤트를 받게됩니다 내부 클래스
class A extends Activity {
BroadcastReceiver r = new BroadcastReceiver(){
// code to handle broadcase
}
}
를 만들 수 있습니다
: 이// Flag if receiver is registered
private boolean mReceiversRegistered = false;
// I think this is the broadcast you need for something like an incoming call
private String INCOMING_CALL_ACTION = "android.intent.action.PHONE_STATE";
// Define a handler and a broadcast receiver
private final Handler mHandler = new Handler();
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Handle reciever
String mAction = intent.getAction();
if(mAction.equals(INCOMING_CALL_ACTION) {
// Do your thing
}
}
@Override
protected void onResume() {
super.onResume();
// Register Sync Recievers
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction(INCOMING_CALL_ACTION);
this.registerReceiver(mIntentReceiver, intentToReceiveFilter, null, mHandler);
mReceiversRegistered = true;
}
@Override
public void onPause() {
super.onPause();
// Make sure you unregister your receivers when you pause your activity
if(mReceiversRegistered) {
unregisterReceiver(mIntentReceiver);
mReceiversRegistered = false;
}
}
그런 다음 당신은 또한 매니페스트에 의도 필터를 추가해야합니다 : 당신이 필요
<activity android:name=".MyActivity" android:label="@string/name" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</activity>
4
4
사실 당신은/활동 TelephonyManager
당신은 당신의 서비스에 PhoneStateListener을 정의에 리스너를 추가하여 걸려 오는 전화에 반응 할 수 그리고
private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}
};
에서 onCreate 방법 :
mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
마지막으로 onDestroy에서 수신기를 삭제합니다.
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
이 경우 훨씬 간단합니다.
관련 문제
- 1. BroadcastReceiver peekService() null을 반환합니다.
- 2. BroadcastReceiver 사용하기
- 3. BroadCastReceiver 시작
- 4. BroadcastReceiver 위치 :
- 5. Android 서비스 + BroadcastReceiver, PhoneStateListener
- 6. 내부 클래스로 BroadcastReceiver
- 7. BroadcastReceiver TTS 및 볼륨
- 8. AndroidManifext.xml 파일에서 BroadcastReceiver 구현
- 9. MediaPlayer BroadcastReceiver RuntimeException
- 10. Android BroadcastReceiver 등록 문제
- 11. BroadcastReceiver 호출시 inputMethod 메서드 호출
- 12. BroadcastReceiver 수신 수신 제한 시간
- 13. BroadcastReceiver 새로운 의도를 시작하는 방법
- 14. 프로세스의 BroadcastReceiver 수명주기 란 무엇입니까?
- 15. 멀티 파트 SMS 용 BroadcastReceiver
- 16. Android Call TTS in BroadcastReceiver
- 17. ListActivity의 getExtras가 Android에서 NULL입니다. BroadcastReceiver
- 18. 일정 기간이 지난 후 BroadcastReceiver 시작 서비스
- 19. 안드로이드 BroadcastReceiver, getResultData() 항상 null을 반환
- 20. Android BroadcastReceiver 정적 인스턴스 변수로 쓰레드/타이머
- 21. 새 활동 시작 BroadcastReceiver 또는 서비스 클래스
- 22. 웹 서비스와 메시징
- 23. 기존 서비스와 ADF 통합
- 24. 실행중인 서비스와 통신
- 25. 서비스를 깨우고 서비스와 통신
- 26. iOS의 Android 서비스와 동일
- 27. 서비스와 활동간에 데이터 공유
- 28. 아마존 웹 서비스와 통합
- 29. 서비스와 핸들러의 관계
- 30. 백그라운드 서비스와 전경 "기본 설정"을 관리하는 데 적합한 모델
BroadcastReceiver의 새 인스턴스를 만든 다음 코드에 등록하여 인 텐트 필터 객체를 제공하는 경우 매니페스트 파일의 활동 정의에 <인 텐트 필터>를 만들 필요가 없습니다. – hara