免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2537 | 回复: 1
打印 上一主题 下一主题

android电话处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-13 23:14 |只看该作者 |倒序浏览
android电话处理










与电话相关权限

拨打电话
  android.permission.CALL_PHONE,允许程序从非系统拨号器里输入电话号码
通话权限
  android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界面

读取电话状态
android.permission.READ_PHONE_STATE,访问电话状态

修改电话状态
   android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞行模式,但不包  替换系统拨号器界面

处理拨出电话
  android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话
AndroidManifest.xml



Xml代码
  1. 1.<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  2. 2.<uses-permission android:name="android.permission.CALL_PHONE" />  
  3. 3.<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />  
  4. 4.<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />  
复制代码
扩展阅读:android权限大全
----------------------------------------------------------------
Android在电话状态改变是会发送
action为android.intent.action.PHONE_STATE的广播

而拨打电话时会发送
action为android.intent.action.NEW_OUTGOING_CALL的广播
例如:



Java代码
  1. 1.IntentFilter filter = new IntentFilter();  
  2. 2.filter.addAction("android.intent.action.NEW_OUTGOING_CALL");  
  3. 3.filter.addAction("android.intent.action.PHONE_STATE");  
复制代码
-------------------------------------------------
去电时:
    * 未接:phone_state=OFFHOOK;
   * 挂断:phone_state=IDLE
* 来电时: *
   * 未接:phone_state=RINGING
   * 已接:phone_state=OFFHOOK;
   * 挂断:phone_state=IDLE
-------------------------------------------

JAVA代码



Java代码
  1. 1.public class PhoneCallReceiver extends BaseReceiver {  
  2. 2./**
  3. 3.//拨打电话判断及获取号码
  4. 4.if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
  5. 5.
  6. 6.String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
  7. 7.*/  
  8. 8.  
  9. 9.    @Override  
  10. 10.    public void onReceive(Context context, Intent intent) {  
  11. 11.         
  12. 12.        String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);     
  13. 13.        /*去电时:
  14. 14.         * 未接:phone_state=OFFHOOK;
  15. 15.         * 挂断:phone_state=IDLE
  16. 16.         * 来电时:      *  
  17. 17.         * 未接:phone_state=RINGING
  18. 18.         * 已接:phone_state=OFFHOOK;
  19. 19.         * 挂断:phone_state=IDLE**/  
  20. 20.        System.out.println("phone_state======"+phone_state);  
  21. 21.        String incoming_number = intent.getStringExtra("incoming_number");  
  22. 22.//String incoming_number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER );  
  23. 23.        String outgoing_number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");  
  24. 24.        System.out.println("incoming_number======"+incoming_number);  
  25. 25.        System.out.println("outgoing_number======"+outgoing_number);  
  26. 26.        //去电设值  
  27. 27.        if(outgoing_number!=null && outgoing_number.length()>0){  
  28. 28.             System.out.println("去电号码"+outgoing_number);  
  29. 29.              
  30. 30.        }      
  31. 31.        //来电设值  
  32. 32.        if(incoming_number!=null && incoming_number.length()>0){  
  33. 33.             System.out.println("来电号码"+incoming_number);  
  34. 34.        }     
  35. 35.         
  36. 36.        if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(phone_state) || TelephonyManager.EXTRA_STATE_RINGING.equals(phone_state))  
  37. 37.        {     
  38. 38.        System.out.println("去电话未接或来电未接及来电已接");  
  39. 39.  
  40. 40.        }  
  41. 41.        if (TelephonyManager.EXTRA_STATE_IDLE.equals(phone_state))  
  42. 42.        {     
  43. 43.                    System.out.println("电话已挂断");  
  44. 44.        }         
  45. 45.        return;  
  46. 46.    }  
  47. 47.      
  48. 48.}  
复制代码
参考文章:
Android之TelephonyManager使用
Android 电话状态的监听(来电和去电)

论坛徽章:
0
2 [报告]
发表于 2011-12-20 16:01 |只看该作者
学习鸟
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP