2015-06-01 10 views
5

qui è il mio manifestoopere ricevitore trasmissione, ma dopo 1 o 2 ore non funziona

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

e

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 
      }   
     } 
} 

è opere, ma dopo qualche tempo che premere il pulsante Indietro e il telefono sia inattivo esso non funziona più

(ho aggiunto "android.os.Process.killProcess (android.os.Process.myPid());" alla fine del mio codice e ora è meglio e lavoro per forse 2 3 ore dopo l'ultima esecuzione)

+0

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

+0

credo, BroadcastReceiver sta ottenendo il sonno come lo stesso il tuo stato del telefono. Ho anche questo problema. –

risposta

0

È possibile utilizzare la gestione degli allarmi per trasmettere il ricevitore dopo un certo intervallo di tempo come questo.

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); 

} 
Problemi correlati