Android 发送dtmf键盘事件(模拟通话界面键盘事件)

转载请声明:http://bbs.niuzhi.cc/thread-22-1-1.html


1.第一步,在代码里加上以下方法

[java] view plain copy
  1. /**
  2. *说明:发送dtmf事件
  3. *Author:
  4. *@paramkeycode
  5. */
  6. publicvoidsendDTMF(charkeycode){
  7. try{
  8. Classcls_phoneFactory=Class
  9. .forName("com.android.internal.telephony.PhoneFactory");
  10. Methodmethod_getDefaultPhone=cls_phoneFactory.getDeclaredMethod(
  11. "getDefaultPhone",null);
  12. method_getDefaultPhone.setAccessible(true);
  13. Objectobj_phone=method_getDefaultPhone.invoke(null);
  14. Methodmethod_sendDTMF=obj_phone.getClass().getDeclaredMethod(
  15. "sendDtmf",char.class);
  16. method_sendDTMF.invoke(obj_phone,keycode);
  17. }catch(Exceptione){
  18. e.printStackTrace();
  19. }
  20. }

2.在AndroidManifest.xml里增加

android:sharedUserId="android.uid.phone"

当然也可以是

android:sharedUserId="android.uid.system"


3.在application节点增加

android:process="com.android.phone"

如果你觉得不合适,也可以在你要增加这个事件的activity节点加,效果一样


4.这时是不能直接运行的,运行的话会报一个错

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

这时,需要对生成的apk文件进行系统签名

没有签名工具的话可以到这里下载

http://download.csdn.net/detail/c_weibin/4883635

5.大功告成


另外:如果手头上有源码,直接在IncallScreen.java里自己写个广告,监听自己应用里的dtmf事件也行,然后在收一广播后,执行mPhone.sendDtmf(keycode);注意,这里的mPhone 不需要自己去初使化,就这样子写就行了!这种方式就不会出现跨线程操作,导致一些很奇怪的现象,也没有权限限制


更多相关文章

  1. 【Android】 触摸事件分发机制
  2. Android(安卓)studio:报错String index out of range: -1
  3. android 事件分发机制源码解析
  4. [置顶] Android(安卓)按钮点击两次触发不同的事件
  5. DataBinding 填坑总结
  6. Cocos Creator 教程:监听 Android(安卓)返回键
  7. cordova 常用监听事件
  8. 解决webview中输入框完成输入隐藏键盘后滑动界面又弹出软键盘问
  9. Android(安卓)手势

随机推荐

  1. android中读写sd卡文件
  2. Android: Support Libraries for Android
  3. android中使用wakelock
  4. android studio 加载.proto不能生成xxxDr
  5. Android小米5安装包解析失败问题
  6. android布局控件的用法
  7. Android(安卓)使用Handler的PostDelayed
  8. Activity的android:launchMode
  9. Android:简单的开场界面
  10. Android编译过程详解(一)