效果图

当我们外部打电话过来的时候,当前的信息会自动的进行改变。

-------------------------------------------------------------------------------

activity代码:

view plain
  1. packagecn.com.chenzheng_java;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.telephony.PhoneStateListener;
  5. importandroid.telephony.TelephonyManager;
  6. importandroid.widget.TextView;
  7. /**
  8. *
  9. *@authorchenzheng_java
  10. *@description通过该实例,我们可以看到,如果我们想要监听电话的拨打状况,需要这么几步
  11. *第一:获取电话服务管理器TelephonyManagermanager=this.getSystemService(TELEPHONY_SERVICE);
  12. *第二:通过TelephonyManager注册我们要监听的电话状态改变事件。manager.listen(newMyPhoneStateListener(),
  13. *PhoneStateListener.LISTEN_CALL_STATE);这里的PhoneStateListener.LISTEN_CALL_STATE就是我们想要
  14. *监听的状态改变事件,初次之外,还有很多其他事件哦。
  15. *第三步:通过extendsPhoneStateListener来定制自己的规则。将其对象传递给第二步作为参数
  16. *第四步:这一步很重要,那就是给应用添加权限。android.permission.READ_PHONE_STATE
  17. *
  18. *
  19. */
  20. publicclassPhoneCallStateActivityextendsActivity{
  21. TelephonyManagermanager;
  22. Stringresult="监听电话状态:/n";
  23. TextViewtextView;
  24. @Override
  25. publicvoidonCreate(BundlesavedInstanceState){
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.main);
  28. //获取电话服务
  29. manager=(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
  30. //手动注册对PhoneStateListener中的listen_call_state状态进行监听
  31. manager.listen(newMyPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);
  32. textView=(TextView)findViewById(R.id.textView1);
  33. textView.setText(result);
  34. }
  35. /***
  36. *继承PhoneStateListener类,我们可以重新其内部的各种监听方法
  37. *然后通过手机状态改变时,系统自动触发这些方法来实现我们想要的功能
  38. */
  39. classMyPhoneStateListenerextendsPhoneStateListener{
  40. @Override
  41. publicvoidonCallStateChanged(intstate,StringincomingNumber){
  42. switch(state){
  43. caseTelephonyManager.CALL_STATE_IDLE:
  44. result+="手机空闲起来了";
  45. break;
  46. caseTelephonyManager.CALL_STATE_RINGING:
  47. result+="手机铃声响了,来电号码:"+incomingNumber;
  48. break;
  49. caseTelephonyManager.CALL_STATE_OFFHOOK:
  50. result+="电话被挂起了";
  51. default:
  52. break;
  53. }
  54. textView.setText(result);
  55. super.onCallStateChanged(state,incomingNumber);
  56. }
  57. }
  58. }

这里一定要注意,别忘记给应用注册权限:

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

----------------------------------------------------------------------------------------

转载: http://blog.csdn.net/chenzheng_java/article/details/6262578


开发中:注册的时候要注意:第二个参数manager.listen(newMyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE),尽量打Log 查看,因为来电话的时候会覆盖这个Acitivity。

更多相关文章

  1. 安卓复选框(Checkbox)
  2. 《Android开发从零开始》——9.Activity高级学习
  3. 可下拉的PinnedHeaderExpandableListView的实现
  4. android讲义9之向电话本进行批处理的插入
  5. Android(安卓)App状态栏动态显示隐藏
  6. Android简单明了的使用属性动画ObjectAnimator 旋转 平移 渐变
  7. Android(安卓)禁止输入框 EditText 复制粘贴
  8. Android中隐藏标题栏和状态栏(电源,信号,时间等信息)
  9. Android(安卓)滚动事件 OnScrollListener

随机推荐

  1. dd命令详解
  2. 使用DBLINK查询时报ORA-00600: internal
  3. 【OS】什么是YUM?如何配置本地YUM源?
  4. 【Tomcat】Tomcat的使用
  5. ssh登录日志收集
  6. 行链接(Row Chaining)和行迁移(Row Migratio
  7. 单个logstash文件收集多个filebeat日志
  8. elk+redis
  9. 【DG】DG的3种保护模式
  10. elk7.4+filebeat收集日志