8888

<receiver android:name="com.example.testpic.PhoneReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <action android:name="android.intent.action.BOOT_COMPLETED" >
                </action>

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </receiver>
public class PhoneReceiver extends BroadcastReceiver {  
    private int lastCallState  = TelephonyManager.CALL_STATE_IDLE;  
    private boolean isIncoming = false;  
    private static String contactNum;  
    Intent audioRecorderService;
    OkHttpClient httpClient;
    SharedPreferences sharedPreferences;
    String type;
    Bitmap bitmap;
    Context  context;

    @Override  
    public void onReceive(Context context, Intent intent) { 
        this.context =context;   
        ConstantUtil.isCall=true;  //判断是否在通话中
         //如果是去电  
        if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){  
            contactNum = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);  
        }else //android.intent.action.PHONE_STATE.查了下android文档,貌似没有专门用于接收来电的action,所以,非去电即来电.  
        {  
            String state = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);  
            String phoneNumber = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);  
            int stateChange = 0;  

            if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
                ConstantUtil.isCall =false;
                //空闲状态  
                stateChange =TelephonyManager.CALL_STATE_IDLE;  
                if (isIncoming){  
                    onIncomingCallEnded(context,phoneNumber);  
                }else {  
                    onOutgoingCallEnded(context,phoneNumber);  
                }  
            }else if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){  
                //摘机状态  
                ConstantUtil.isCall =false;
                stateChange = TelephonyManager.CALL_STATE_OFFHOOK;  
                if (lastCallState != TelephonyManager.CALL_STATE_RINGING){  
                    //如果最近的状态不是来电响铃的话,意味着本次通话是去电  
                    isIncoming =false;  
                    onOutgoingCallStarted(context,phoneNumber);  
                }else {  
                    //否则本次通话是来电  
                    isIncoming = true;  
                    onIncomingCallAnswered(context, phoneNumber);  
                }  
            }else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)){  
                //来电响铃状态  
                ConstantUtil.isCall =false;
                stateChange = TelephonyManager.CALL_STATE_RINGING;  
                lastCallState = stateChange;  
                onIncomingCallReceived(context,contactNum);  
            }  
        }  
    } 

    protected void onIncomingCallStarted(Context context,String number){  
      Toast.makeText(context, "0", 0).show();
    }  
protected void onOutgoingCallStarted(Context context,String number){
        //正在通话中会走这个方法。在这里处理自己的逻辑
        putRed(context);
    }  
    protected void onIncomingCallEnded(Context context,String number){
         Toast.makeText(context, ConstantUtil.Ad_id, 0).show();
    }  
    protected void onOutgoingCallEnded(Context context,String number){
        //电话挂断时候会走这个方法。在这里处理自己的逻辑
        ConstantUtil.isCall =true;
        Intent intent =new Intent(context,MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }  
    protected void onIncomingCallReceived(Context context,String number){
         Toast.makeText(context, "4", 0).show();
    }  
    protected void onIncomingCallAnswered(Context context, String number) {
         Toast.makeText(context, "5", 0).show();
    } 

} 

这里写图片描述

这里写图片描述

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值