7

INCOMING CALL SCREEN을 재정의해야하는 응용 프로그램에서 작업하고 있습니다.기본 수신 전화 화면을 Android의 TelephonyManager.CALL_STATE_RINGING에서 배경으로 이동하십시오.

장치가 전화를 받으면 응용 프로그램의 팝업을 표시해야합니다. 이 작업에 대해 자세히 조사했습니다. CALL POPOUT은 동일한 기능을 사용하는 응용 프로그램이지만 소스 코드를 가져 오지 못합니다.

현재 익숙한 전화 기능을 사용할 수있는 모듈이 거의 없습니다. 위의 코드의 도움으로

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

, 나는 CALL 화면의 상단에 내 응용 프로그램의 MAP 화면을 얻고 있지만, 그냥 다음 FEW 마이크로 초에 대한 수신 전화 화면 상단에 온다. 장치가 전화를 받고 응용 프로그램의 화면을 표시해야 할 때 전화 거는 화면을 숨겨야합니다.

좋습니다.

+0

헤이 샘 -에 - TechValens @, 당신이 관리 않았다 내 대답은 결국이 일을 해결하기 위해 참조하십시오? – Nikola

답변

0

전화가 걸려 오면 내 활동과 기본 수신 활동이 모두 표시됩니다. 활동이 처음으로 표시되면 나중에 들어오는 활동이 너의 것 위에 표시되며, 그것은 작업이고 다시 스택하는 것입니다.

해결 방법 : 활동이 표시 될 때 들어오는 활동이 사용자의 위에 표시되는지 확인 - 사용자가 활동을 취소하는 것을 제외하고 활동을 다시 위로 이동합니다.

similar question here

관련 문제