Bir BroadCastReceiver uygulamasının nasıl gerçekleştirileceğine dair birkaç örnek gördüm, ancak bazı Bekleyen Amaçlara (örneğin gelen telefon çağrısına) tepki vermesi gereken bir Hizmeti nasıl uygulamalıyım? Aslında merak ettim Aynı "sorun" ancak bir Faaliyette .. Açıkça bir Hizmet veya Etkinlik genişleten bir sınıf var) bu yüzden BroadCastReceiver genişletemezsiniz ... "Platform farkında" hizmetleri yapamayız ve/veya activties?Service ve BroadCastReceiver
9
A
cevap
12
çağırabilir olayları alacak bir iç sınıfı
class A extends Activity {
BroadcastReceiver r = new BroadcastReceiver(){
// code to handle broadcase
}
}
oluşturabilir
:// 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;
}
}
Sonra da Bildiriminize bir niyet-filtre eklemek gerekir: Eğer gerek
<activity android:name=".MyActivity" android:label="@string/name" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</activity>
4
sınıf belirli niyet almaya Bir etkinliği kaydetmek için ana işleyicisi geçmek, ya da sadece bazı dış yöntemler
+0
İç sınıf olması gerekli mi? – n611x007
4
Aslında sadece/Etkinlik TelephonyManager
Sen Hizmet PhoneStateListener tanımlamakdinleyicinin ekleyerek gelen aramaya tepki verebilir Sonra
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 yöntemde:
mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Sonunda dinleyiciyi onarıda temizlediniz:
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
Bu durumda çok daha basit.
İlgili konular
- 1. AlarmManager, BroadcastReceiver ve Service çalışmıyor
- 2. BroadcastReceiver ve ana yöntem
- 3. BroadcastReceiver
- 4. Cihaz wi-Fi açıldığında Tost nasıl gösterilir BroadCastreceiver ve Service kullanarak mı?
- 5. startActivity() BroadcastReceiver
- 6. @Service
- 7. BroadcastReceiver sınıfında getApplicationContext nasıl kullanılır?
- 8. BroadcastReceiver konum için
- 9. BroadcastReceiver Vs WakefulBroadcastReceiver
- 10. SCREEN_OFF BroadcastReceiver çalışmıyor
- 11. Android: BroadcastReceiver üzerinden bildirim
- 12. BroadcastReceiver parametresine geçirme
- 13. BadParcelableException - BroadcastReceiver intent crash
- 14. Android geofencing API BroadcastReceiver tetiklenmedi
- 15. BroadcastReceiver ben yaparak bir Yayınını göndermek
- 16. Android: BroadcastReceiver uygulama yükleme/kaldırma
- 17. Android show bildirimi Gönderen BroadcastReceiver
- 18. Android arama TTS in BroadcastReceiver
- 19. Java/Yay @Service sorun ve @Autowired açıklamalar
- 20. Service Broker ve WCF birlikte çalışabilirliği
- 21. C# ve Exchange Web Service - Hata
- 22. AlarmManager ve BroadcastReceiver ile kendilerini çağıran çoklu yayınlar
- 23. Uygulamadan Yanıt Vermiyor (ANR), Aktivite ve BroadcastReceiver üzerinden nasıl çoğaltılabilir?
- 24. MEF + WCF Service Host?
- 25. Service Locator, Bağımlılık Enjeksiyonu (ve Konteyneri) ve Kontrolün Tersine Çevirilmesi
- 26. Service Unavaiable - ApplicationPool başlatılamıyor
- 27. systemd service başlangıç sorunu
- 28. WCF Service Memory Leaks
- 29. Android Chat Service
- 30. .Net Web Service Logging
, yeni bir BroadcastReceiver örneği oluşturup daha sonra bir hedef süzgeç nesnesi sağlayarak kodunuza kaydettirirseniz, bildirim dosyasında etkinlik tanımınızda bir oluşturmanıza gerek yoktur. –
hara