2015-06-01 18 views
5

çalışmıyor burada benim tezahüryayın alıcısı çalışır ancak 1 veya 2 saat sonra

<receiver android:name=".MyCallReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
</receiver> 

ve

public class MyCallReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
      if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

       some code 

      } 

     if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){ 

       some code 
      }   
     } 
} 

o eserler olduğunu ama bazen o basıldıktan sonra geri düğmesi ve telefon onu boşta daha fazla çalışmaz

("android.os.Process.killProcess (android.os.Process.myPid());" kodunun sonuna ekledim ve şimdi daha iyi ve belki 2 için çalışıyor Son çalıştırmadan 3 saat sonra)

+0

Kontrol http://stackoverflow.com/questions/30365955/broadcast-receiver-does-not-deduct-calls-android/30368041#30368041 – DJphy

+0

Bence bu bağlantıyı, BroadcastReceiver aynı şekilde uyku oluyor Telefonunuzun durumu. Ben de bu problemi yaşadım. –

cevap

0

Böyle belirli bir süre sonra alıcıyı yayınlamak için alarm görevlisini kullanabilirsiniz.

public static void scheduleTestAlarmReceiver(Context context) { 

    Intent receiverIntent = new Intent(context, TestAlarmReceiver.class); 
    PendingIntent sender = PendingIntent.getBroadcast(context, 123456789, receiverIntent, 0); 

    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+startDelay, someDelay, sender); 

} 
İlgili konular