android监听来电去电广播
2012-07-25 16:52
459 查看
转/article/5877439.html
要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
权限:
<uses-permission
android:name="android.permission.READ_PHONE_STATE"></uses-permission>
要监听android打电话和接电话,只需下面2步骤
第一步,写一个Receiver继承自BroadcastReceiver
来电action为TelephonyManager.ACTION_PHONE_STATE_CHANGED
去电action为Intent.ACTION_NEW_OUTGOING_CALL
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch(state) { case TelephonyManager.CALL_STATE_IDLE: //空闲 break; case TelephonyManager.CALL_STATE_RINGING: //来电 break; case TelephonyManager.CALL_STATE_OFFHOOK: //摘机(正在通话中) break; } } } //获取电话通讯服务 TelephonyManager tpm = (TelephonyManager) this .getSystemService(Context.TELEPHONY_SERVICE); //创建一个监听对象,监听电话状态改变事件 tpm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
权限:
<uses-permission
android:name="android.permission.READ_PHONE_STATE"></uses-permission>
要监听android打电话和接电话,只需下面2步骤
第一步,写一个Receiver继承自BroadcastReceiver
来电action为TelephonyManager.ACTION_PHONE_STATE_CHANGED
去电action为Intent.ACTION_NEW_OUTGOING_CALL
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>
相关文章推荐
- [Android] 使用广播接收器Braodcast Receiver 监听手机来电 去电 挂断的事
- android监听来电去电广播 .
- android监听来电去电广播
- android 电话状态的监听(来电和去电) PhoneStateListener和TelephonyManager
- Android 监听去电接通状态,注意不是来电
- Android开发入门之实现动态注册广播监听网络变化
- Android利用系统广播---监听应用程序安装和卸载
- 如何实现android中监听来电并生成悬浮窗体提示
- 主题:如何实现android中监听来电并生成悬浮窗体提示
- Android开机和关机广播监听
- Android监听解锁屏幕广播
- Android利用系统广播---监听应用程…
- android 呼入电话的监听(来电监听)
- Android 监听wifi广播的两种方式
- 关于Android4.X后监听开机广播的一些记录
- Android来电监听
- 【android】监听网络变化连续多个广播的问题解决
- Android自定义一个广播接收器BroadcastReceiver监听本地消息
- android监听网络状态的广播
- android 电话状态的监听(来电和去电)