7

Sto lavorando a un'applicazione in cui devo sovrascrivere lo SCHERMO DI CHIAMATA IN ENTRATA.Sposta lo schermo di chiamata in entrata predefinito in background su TelephonyManager.CALL_STATE_RINGING in Android

Quando il dispositivo riceve una chiamata, devo mostrare un popup della mia domanda. Ho fatto una ricerca dettagliata su questo compito. CALL POPOUT è un'applicazione che utilizza la stessa funzionalità, ma non ricevo il codice sorgente.

Attualmente sto avendo pochi moduli con cui possiamo ottenere l'azione di INCOMING CALL.

public class MyPhonestateListner extends PhoneStateListener { 
    Context context; 
    List<String> blockedNumberList = new ArrayList<String>(); 
    BlockDataSource datasourceobj; 

    public MyPhonestateListner(Context context) { 
     super(); 
     this.context = context; 

    } 

    @Override 
    public void onCallStateChanged(int state, String callingNumber) { 
     super.onCallStateChanged(state, callingNumber); 
     callingNumber = callingNumber.replace(" ", ""); 
     switch (state) { 

     case TelephonyManager.CALL_STATE_IDLE: 
      break; 

     case TelephonyManager.CALL_STATE_OFFHOOK: 
      // handle out going call 
      // if(blockedNumberList.contains(callingNumber)) 
      endCallIfBlocked(callingNumber); 
      break; 

     case TelephonyManager.CALL_STATE_RINGING: 
      // handle in coming call 
      new Handler().postDelayed(new Runnable() { 
        public void run() { 
         Intent intentPhoneCall = new Intent("android.intent.action.CALL"); 
           intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intentPhoneCall); 
          } 
        }, 10); 
      // if(blockedNumberList.contains(callingNumber)) 
      //endCallIfBlocked(callingNumber); 
      // ActivityManagerNative.getDefault().moveTaskToBack(i); 
      //android.app.ActivityManager.RunningTaskInfo runningtaskinfo = TaskUtil.getPresentTaskInfo(this); 
      break; 

     default: 
      break; 
     } 
    } 


} 


MY reciever 

public class BlockReciever extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     System.out.println("I am reciever"); 
     TelephonyManager telephony = (TelephonyManager) context 
       .getSystemService(Context.TELEPHONY_SERVICE); 
     MyPhonestateListner listener = new MyPhonestateListner(context); 
     telephony.listen(listener, PhoneStateListener.LISTEN_CALL_STATE); 
    } 
} 

Con l'aiuto di codice di cui sopra, sto ottenendo la schermata della mappa della mia applicazione sulla parte superiore CALL SCREEN, ma solo per SECONDI MICRO pochi e la chiamata SCHERMO IN ARRIVO arriva in cima. DEVO NASCONDERE LA SCHERMATA DELLA CHIAMATA quando il dispositivo riceve una chiamata e deve mostrare lo schermo della mia applicazione.

Si prega di suggerire.

+0

Hey @ Sam-in-TechValens, siete riusciti a risolvere questo alla fine? – Nikola

risposta

0

Quando c'è una chiamata in arrivo, verranno visualizzate sia l'attività che l'attività di ingresso predefinita. Nel caso in cui la tua attività venga mostrata per prima, in seguito l'attività in entrata verrà mostrata sulla tua, le attività e il back stack.

La soluzione: quando la tua attività viene mostrata, controlla se l'attività in arrivo viene visualizzata sul tuo -> sposta di nuovo l'attività in alto, tranne che l'utente rifiuta la tua attività.

Si prega di consultare la mia risposta alla similar question here

Problemi correlati