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

  2. private static final String TAG = "PhoneStatReceiver";

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

  4. private static boolean incomingFlag = false;

  5. private static String incoming_number = null;

  6. @Override
  7. public void onReceive(Context context, Intent intent) {
  8. //如果是拨打电话
  9. if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
  10. incomingFlag = false;
  11. String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
  12. Log.i(TAG, "call OUT:"+phoneNumber);
  13. }
  14. else{
  15. //如果是来电
    StringphoneNumber=intent.getStringExtra(

    TelephonyManager.EXTRA_INCOMING_NUMBER);

    TelephonyManagertelephony=

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

    intstate=telephony.getCallState();

    switch(state){

    caseTelephonyManager.CALL_STATE_RINGING:

    Log.i(TAG,"[Broadcast]等待接电话="+phoneNumber);

    break;

    caseTelephonyManager.CALL_STATE_IDLE:

    Log.i(TAG,"[Broadcast]电话挂断="+phoneNumber);

    break;

    caseTelephonyManager.CALL_STATE_OFFHOOK:

    Log.i(TAG,"[Broadcast]通话中="+phoneNumber);

    break;

  16. }
  17. }
  18. }
  19. }
复制代码 第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
  1. <receiver android:name=".filter.PhoneStatReceiver">
  2. <intent-filter>
  3. <action android:name="android.intent.action.PHONE_STATE"/>
  4. <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
  5. </intent-filter>
  6. </receiver>

  7. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  8. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
复制代码

更多相关文章

  1. Android(安卓)简易音乐动态相册(多种动画)
  2. android SharedPreferences 详解与开发实例
  3. 《Android(安卓)9编程通俗演义》代码下载
  4. android 一个应用去获取另一个应用assets下面的资源通过框架代码
  5. 学习深入理解android第一章
  6. Android遍历所有文件夹和子目录搜索文件
  7. Android(安卓)卸载应用的两种方式
  8. android 如何通过包名杀死指定的进程
  9. Android(安卓)NDK开发之旅29--C++--list、set、map用法

随机推荐

  1. Android_简单笔记一
  2. Android中layout_gravity和gravity的区别
  3. Android(安卓)Jni代码示例讲解
  4. Android(安卓)OpenGL教程-第一课
  5. 《Android/OPhone开发完全讲义》连载(4):And
  6. android 创建AVD时 无系统镜像 No target
  7. android activity
  8. Android(安卓)RelativeLayout 属性
  9. android兼容oppo手机刘海屏解决方案
  10. android中shape的属性