与电话相关权限
拨打电话
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
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
扩展阅读:
android权限大全
----------------------------------------------------------------
Android在电话状态改变是会发送
action为android.intent.action.PHONE_STATE的广播
而拨打电话时会发送
action为android.intent.action.NEW_OUTGOING_CALL的广播
例如:
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");
filter.addAction("android.intent.action.PHONE_STATE");
-------------------------------------------------
去电时:
* 未接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
* 来电时: *
* 未接:phone_state=RINGING
* 已接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
-------------------------------------------
JAVA代码
public class PhoneCallReceiver extends BaseReceiver {
/**
//拨打电话判断及获取号码
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
*/
@Override
public void onReceive(Context context, Intent intent) {
String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
/*去电时:
* 未接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
* 来电时: *
* 未接:phone_state=RINGING
* 已接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE**/
System.out.println("phone_state======"+phone_state);
String incoming_number = intent.getStringExtra("incoming_number");
//String incoming_number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER );
String outgoing_number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");
System.out.println("incoming_number======"+incoming_number);
System.out.println("outgoing_number======"+outgoing_number);
//去电设值
if(outgoing_number!=null && outgoing_number.length()>0){
System.out.println("去电号码"+outgoing_number);
}
//来电设值
if(incoming_number!=null && incoming_number.length()>0){
System.out.println("来电号码"+incoming_number);
}
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(phone_state) || TelephonyManager.EXTRA_STATE_RINGING.equals(phone_state))
{
System.out.println("去电话未接或来电未接及来电已接");
}
if (TelephonyManager.EXTRA_STATE_IDLE.equals(phone_state))
{
System.out.println("电话已挂断");
}
return;
}
}
参考文章:
Android之TelephonyManager使用
Android 电话状态的监听(来电和去电)
分享到:
相关推荐
在Android平台上,对电话状态的监听和拦截是一个需要特别权限和精确实现的敏感操作,这涉及到Android的权限管理、广播接收器(BroadcastReceiver)、事件监听机制以及电话状态的处理。以下知识点将详细介绍如何实现这...
这个"android电话归属地本地数据库"就是专门为实现这一功能而设计的。这个数据库通常包含了全国乃至全球的电话号码段及其对应的归属地信息,以便在接收到电话时快速查找到对应的信息。 mobileNumber.db 是数据库...
通过分析这些源码,我们可以深入理解Android如何处理电话相关的操作,包括发起呼叫、挂断电话、接听等。以下将详细讨论Android打电话源码中的关键知识点: 1. **PhoneService**: 这是Android系统中处理电话服务的...
《Android电话源码详解》 Android系统作为全球最流行的开源移动操作系统,其源码的开放性使得开发者可以深入理解系统内部工作原理,特别是在电话功能这一核心模块上。本文将聚焦于"android 电话源码Phone.zip",...
当用户点击这个链接时,WebView默认不会处理电话拨号链接,所以我们需要重写`WebChromeClient`或`WebViewClient`来捕获并处理这个事件。 ```java WebView webView = new WebView(this); webView.getSettings()....
在Android平台上,短信和电话拦截是一项重要的功能,它允许开发者创建应用程序来管理用户接收到的通信。本项目涉及的是一个已经编写完成的Android应用,它能够实现短信和电话的拦截功能,用户导入到Eclipse IDE中...
在Android平台上,实现拨打电话功能是一项常见的任务,尤其对于那些需要与用户进行语音通信的应用来说。这个过程涉及到Android系统的权限管理、Intent机制以及电话服务的交互。以下将详细讲解如何在Android应用中...
综上所述,构建一个基于Android的电话本管理系统涵盖了Android UI设计、SQLite数据库操作、数据绑定、事件监听和异步处理等多个核心知识点。通过这样的实践,开发者可以深化对Android开发的理解,提升技能水平。
在Android应用开发中,打电话功能是一项基础且重要的功能,它允许用户通过应用程序直接拨打电话。本项目源码提供了实现这一功能的详细示例,对于学习和理解Android编程,特别是涉及电话服务API的使用,有着极大的...
Android 电话模块是 Android 系统中的一部分,负责处理电话相关的事件和信息。电话模块的主要组件包括 Phone 应用、Telephony 框架层和 CallManager。 Phone 应用是 Android 系统中的一个核心应用,负责处理两种...
在Android平台上实现拨打...总之,实现Android的拨打电话黑屏功能,主要涉及到拨号权限的申请、`PowerManager` 的使用以及可能的来电处理逻辑。理解并实践这些知识点,可以帮助开发者创建出更符合用户需求的应用程序。
在Android系统中,拨打电话和挂断电话通常是通过标准的Intent机制来实现的,但有时候开发者可能需要在特定情况下通过程序逻辑控制这些操作,比如在自动化测试或者特殊应用中。本教程将介绍如何利用Java的反射机制来...
在Android开发中,自定义滑动接听电话控件组是一种常见的功能实现,它为用户提供了一种直观、便捷的接听电话方式。这样的控件通常由一个显示来电信息的界面和一个可滑动的接听/挂断按钮组成。在这个场景中,我们将...
研究这些源码可以帮助开发者深入理解Android电话功能的工作原理,并进行自定义开发或优化。 总的来说,理解和研究"android 电话源码"需要扎实的Java编程基础,对Android系统架构和框架有深入理解,同时还需要熟悉...
总结起来,Android 实现电话自动录音功能需要监听电话状态变化,通过 `PhoneStateListener` 处理来电和去电状态,并结合 `BroadcastReceiver` 监听去电拨号。在适当的状态下,利用 `MediaRecorder` 进行录音操作。在...
Android 4.0(Ice Cream Sandwich,简称ICS)时期的Phone模块源代码为我们提供了一个深入了解Android电话系统内部运作的窗口。下面我们将深入探讨这个模块的主要组成部分、工作原理及其相关知识点。 1. **Phone服务...
在Android系统中,电话模块是核心组件之一,它负责处理所有与电话相关的功能,包括拨打电话、接收来电、管理联系人、短信服务等。这里我们关注的是Android 4.2.2_r1版本的Phone电话模块源代码。深入理解这个模块的...
8. **异常处理**:在拨打电话过程中,可能遇到无网络、无SIM卡或用户拒绝权限等情况,需要编写适当的异常处理代码,为用户提供反馈信息。 9. **测试与调试**:在实际设备上进行测试至关重要,模拟器可能无法完全...
在Android系统中,电话流程是一个复杂且重要的过程,它涉及到多个系统组件的交互。这篇文档主要针对Android初学者,旨在详细解析电话流程的工作原理。在Android平台上,电话管理由电信框架(Telephony Framework)...
总的来说,Android接听电话涉及到的源码包括电话服务、电话状态监听、通话UI管理、底层通信接口、音频处理等多个方面。深入理解这些组件和它们之间的交互,可以帮助开发者更好地实现自定义通话功能或者优化通话体验...