OutgoingCallBroadcaster启动InCallScreen流程

OutgoingCallBroadcaster:接收ACTION_CALL的信息,别且对紧急电话和普通电话进行分析,启到一个过滤的作用;

InCallScreen:打电话和接电话的界面;

 参考:http://www.cnblogs.com/chenxian/archive/2010/09/23/1833278.html

无论是普通电话还是紧急电话都会启动InCallScreen界面;

 简介:

          OutgoingCallBroadcaster.class

              String number = PhoneNumberUtils.getNumberFromIntent(intent, this);

                PhoneNumberUtils.isPotentialLocalEmergencyNumber(number, this)

              1.PhoneApp.getInstance().callController.placeCall(intent)?...

              2. sendOrderedBroadcast(broadcastIntent, PERMISSION, new OutgoingCallReceiver(),----OutgoingCallReceiver

                 startSipCallOptionHandler();------context.startActivity(selectPhoneIntent);

                SipCallOptionHandler.java--- setResultAndFinish();-------PhoneApp.getInstance().callController.placeCall(mIntent);

                    

流程:

    1、OutgoingCallBroadcaster.class

          startSipCallOptionHandler(....){

                ..........

               Intent selectPhoneIntent = new Intent(ACTION_SIP_SELECT_PHONE, uri);
               selectPhoneIntent.setClass(context, SipCallOptionHandler.class);
               selectPhoneIntent.putExtra(EXTRA_NEW_CALL_INTENT, newIntent);
               selectPhoneIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

               context.startActivity(selectPhoneIntent);   //启动了SipCallOptionHandler.class

          }

    2、SipCallOptionHandler.class

           setResultAndFinish() {

                ........

              PhoneApp.getInstance().callController.placeCall(mIntent);

               .........

           }

   3、CallController.class

           placeCall(Intent intent) {

                ........

              mApp.displayCallScreen();  //mApp = PhoneApp app;

          }

   4、PhoneApp.class

          displayCallScreen() {

               .......

             startActivity(createInCallIntent());

           }

 

          static Intent createInCallIntent() {
                 Intent intent = new Intent(Intent.ACTION_MAIN, null);
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
                | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
                intent.setClassName("com.android.phone", getCallScreenClassName());
                return intent;
          }

         

           static String getCallScreenClassName() {
               return InCallScreen.class.getName();
           }

               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值