`
407827531
  • 浏览: 1061849 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android-监听来电和去电

阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver

public class PhoneStatReceiver extends BroadcastReceiver{

       

        private static final String TAG = "PhoneStatReceiver";

       

//        private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();

       

        private static boolean incomingFlag = false;

       

        private static String incoming_number = null;

 

        @Override

        public void onReceive(Context context, Intent intent) {

                //如果是拨打电话

                if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){                       

                        incomingFlag = false;

                        String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);       

                        Log.i(TAG, "call OUT:"+phoneNumber);                       

                }else{                       

                        //如果是来电

                        TelephonyManager tm =

                            (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);                       

                       

                        switch (tm.getCallState()) {

                        case TelephonyManager.CALL_STATE_RINGING:

                                incomingFlag = true;//标识当前是来电

                                incoming_number = intent.getStringExtra("incoming_number");

                                Log.i(TAG, "RINGING :"+ incoming_number);

                                break;

                        case TelephonyManager.CALL_STATE_OFFHOOK:                               

                                if(incomingFlag){

                                        Log.i(TAG, "incoming ACCEPT :"+ incoming_number);

                                }

                                break;

                       

                        case TelephonyManager.CALL_STATE_IDLE:                               

                                if(incomingFlag){

                                        Log.i(TAG, "incoming IDLE");                               

                                }

                                break;

                        }

                }

        }

}

第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。

<receiver android:name=".filter.PhoneStatReceiver">  

            <intent-filter>

                 <action android:name="android.intent.action.PHONE_STATE"/>           

                 <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

            </intent-filter>

</receiver>

 

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics