AndroidVersion]

Android V2.3 (GB, GB2,GB3)

Android V4.0, V4.1 (ICS, ICS2, JB)

Android V4.2 (JB2,JB3,JB5)

[DESCRIPTION]

Android提供了类PhoneStateListener以方便非Phone进程时监听Phone的状态,如Phone State,Service State,Signal Strength,Call forward,VoiceMail Indicator,Cell Location等。

Android提供了Interface ITelephony来帮助第三方App实现拨打、接听、挂断电话等操作。

类PhoneStateListener的实现在文件:PhoneStateListener.java (frameworks\base\telephony\java\android\telephony)

类ITelephony的实现在文件:PhoneInterfaceManager.java (packages\apps\Phone\src\com\android\phone)中

[SOLUTION]

监听Phone状态:

1、import android.telephony.PhoneStateListener.

2、实现一个继承自PhoneStateListener的类(内部类、匿名类、普通类均可),并实例化该类。

例如PhoneStateListener myListener = new PhoneStateListener(){...};

对于需要监听的状态,重写相应的函数。例如:希望监听Phone的状态,则重写public void onCallStateChanged(int state, String inComingNumber);

其中各参数的含义请参考PhoneStateListener的注释。

3、书写代码

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

tm.listen(myListener, PhoneStateListener.LISTEN_CALL_STATE);//单卡

tm.listenGemini(myListener, PhoneStateListener.LISTEN_CALL_STATE, Phone.GEMINI_SIM_1);//双卡

第三方App控制电话行为

ITelephonyphone=(ITelephony)ITelephony.Stub.asInterface(ServiceManager.getService("phone"));

拨打电话:phone.call (单卡), phone.callGemini (双卡),其他的行为可参考PhoneInterfaceManager中的函数。 最后请注意 PhoneStateListener需要在使用完后调用TelephonyManager.listen(myListener,PhoneStateListener.LISTEN_NONE )来释放引用,否则会引起OOM问题。

更多相关文章

  1. android调用matlab中的函数方法
  2. Android媒体扫描代码分析
  3. Android在Fragment中不调用onActivityResult()的解决办法
  4. Android(安卓)Fragment+ViewPager禁止ViewPager左右滑动
  5. Android(安卓)SDK1.5 模拟器 快捷键 (模拟 屏幕旋转 轨迹球等。
  6. Android(安卓)菜单BoomMenu(悬浮按钮弹出菜单)
  7. 安卓逆向_22 --- 使用渗透测试框架 Xposed 框架 hook 调试 Andro
  8. android 2.3 & 4.2 Audio静音过程分析
  9. android recovery 系统代码分析【精】

随机推荐

  1. Android GridView选择样式
  2. 【转】修改Android应用程序的默认最大内
  3. 在Android中实现service动态更新UI界面
  4. Android ListView,GridView,ScrollView,P
  5. android jni开发环境的搭建
  6. [置顶] Android中在界面上动态显示歌词
  7. Android 异步更新UI----AsyncTask
  8. Android中的悬浮对话框和即点即关对话框
  9. android Looper、Handler和MessageQueue
  10. 推荐10个Android开源项目