2012-03-04 13 views
5

Attualmente sto intercettando una chiamata e la inoltro alla mia attività personalizzata "oncallscreen". Tuttavia, prima di arrivare al mio schermo lampeggerà sulla "schermata iniziale" predefinita. Come posso nascondere/cancellare questa schermata in modo che quando ricevo una chiamata ottengo solo la mia schermata personalizzata.Come posso nascondere/cancellare la schermata iniziale predefinita

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("DEBUG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

risposta

1

È necessario intercettare trasmettere android.intent.action.PHONE_STATE con la massima priorità possibile, allora, se nella vostra BroadcastReceiver.onReceive() si annulla la trasmissione attraverso BroadcastReceiver.abortBroadcast() si sarà in grado di fermare schermata chiamata in arrivo predefinita per essere mostrato, dal momento che l'applicazione di default non riceverà trasmissione di chiamate in entrata. Dopodiché sei libero di mostrare la tua attività.

+1

Non sono sicuro se questo funzionasse, ma non funziona in Android 4.1.2 - la trasmissione PHONE_STATE non è ordinata, quindi si ottiene un errore quando si tenta di interrompere la trasmissione poiché non è possibile interrompere le trasmissioni non ordinate . –

+0

Qual è la priorità più alta per ricevere la trasmissione della chiamata in arrivo. – VickyS

Problemi correlati