要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
public class PhoneStatReceiver extends BroadcastReceiver{
private static final String TAG = "PhoneStatReceiver";
// private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();
private static boolean incomingFlag = false;
private static String incoming_number = null;
@Override
public void onReceive(Context context, Intent intent) {
//如果是拨打电话
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
incomingFlag = false;
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG, "call OUT:"+phoneNumber);
}else{
//如果是来电
TelephonyManager tm =
(TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
switch (tm.getCallState()) {
case TelephonyManager.CALL_STATE_RINGING:
incomingFlag = true;//标识当前是来电
incoming_number = intent.getStringExtra("incoming_number");
Log.i(TAG, "RINGING :"+ incoming_number);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if(incomingFlag){
Log.i(TAG, "incoming ACCEPT :"+ incoming_number);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if(incomingFlag){
Log.i(TAG, "incoming IDLE");
}
break;
}
}
}
}
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
<receiver android:name=".filter.PhoneStatReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
转载自:http://www.eoeandroid.com/thread-8994-1-1.html
分享到:
相关推荐
8. **状态保存和恢复**:Android应用可能会因为各种原因(如电话来电、屏幕旋转)而被销毁和重建,因此需要保存和恢复频道列表的状态,以保持用户的操作不丢失。 9. **权限管理**:如果涉及到本地数据存储,需要...
5. **来电处理**:考虑到手机设备的特性,需要监听来电事件,当电话接入或拨出时,暂停音乐播放并记录当前播放位置,电话结束时恢复播放。 6. **语言支持**:通过Android的资源文件(res/values/strings.xml)设置多...
在Android操作系统中,桌面快捷方式上的未读消息数目、未接来电和短信提醒的数字标记是一种常见的通知系统功能。这个小数字通常出现在应用图标右上角,被称为“通知徽标”或“角标”。它的作用是提醒用户有未处理的...
`CallLog.Calls`表包含了各种通话信息,如ID、类型(来电、去电、未接)、时间、号码、持续时间等。你可以使用`SQLiteDatabase`类进行数据库操作。 4. **RecyclerView**:展示通话记录列表通常使用RecyclerView,这...
在Android系统中,电话状态监听是一项重要的功能,它允许应用程序获取和响应手机的通话状态,如来电、去电、通话结束等。这个"android_phone_state.rar_android"可能包含了一个示例项目或者库,用于演示如何在...
短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram...
首先,我们需要在AndroidManifest文件中添加相应的权限和广播接收器,以便监听来电的状态。权限包括MODIFY_PHONE_STATE和READ_PHONE_STATE,这两个权限是必需的,以便我们的应用程序可以控制电话的状态。 接下来,...
同时,我们可以注册BroadcastReceiver监听特定的事件(如来电、网络状态变化等),当这些事件发生时,BroadcastReceiver接收到广播并启动拨号Intent。 2. **PhoneAccount**: 自定义PhoneAccount是Android 5.0...
这样的控件通常由一个显示来电信息的界面和一个可滑动的接听/挂断按钮组成。在这个场景中,我们将深入探讨如何创建这样一个自定义控件,并涵盖以下几个关键知识点: 1. **自定义View**: 自定义滑动接听控件首先...
总的来说,Android的音量控制系统是高度可定制的,无论是用户还是开发者,都能轻松调整和控制各个音量层次,以满足不同的需求。通过对AudioManager类的深入理解和使用,开发者可以创建出更加智能和用户友好的音频...
此外,还可能有设置界面,让用户可以轻松地将选择的铃声设为默认来电、短信或其他通知的提示音。 在事件处理方面,Android使用监听器(Listener)模式来响应用户的操作。比如,点击事件监听器会处理用户对铃声条目...
总结来说,Android提供的这些API使得开发者可以轻松地实现对设备硬件的控制,包括播放铃声、触发震动以及监听传感器事件,从而创建出丰富的交互体验。例如,结合上述代码,我们可以创建一个简单的应用,实现类似于...
- **滑动监听**:在手势识别的回调中,根据滑动的距离和速度来调整动画的执行。如果滑动距离超过一定阈值,可以启动动画;若滑动速度过快,可以考虑使用回弹效果,这通常需要用到`Scroller`或`OverScroller`类。 4...
5. **Intent和BroadcastReceiver**:理解如何在不同组件间传递信息,以及如何监听系统事件(如来电、闹钟)来改变铃声。 6. **数据持久化**:如果应用有自定义铃声列表,可能涉及SQLite数据库或SharedPreferences的...
这涉及到了对输入文本的监听和数据过滤算法的实现。 4. **联系人同步与导入导出**:考虑到实际需求,项目可能集成了系统联系人的读取和写入功能,允许用户同步手机上的联系人到应用内,或者将应用内的联系人导出为...
本项目"Android音乐播放器"基于Android Studio,利用Service和BroadcastReceiver两大核心组件来实现后台播放、控制以及系统事件监听等功能。下面将详细解析这个项目中的知识点。 1. **Service组件**:在Android中,...
CallReminder的核心功能之一是监听来电事件,这需要用到Android的BroadcastReceiver组件。BroadcastReceiver可以监听系统广播,当接收到特定的系统事件(如来电)时,触发相应的回调函数,执行提醒操作。 5. **...
通过BroadcastReceiver,我们可以监听系统事件,如来电或网络状态变化,以便在游戏中做出相应调整。 在需求分析与系统概要设计阶段,我们明确了游戏的目标用户群体,分析了他们的行为模式,以此为依据制定了游戏的...
- **读取通话记录**:库提供了读取通话记录的功能,包括通话类型(来电、去电、未接)、时间、号码等信息。 - **删除通话记录**:可以方便地删除某个或某类通话记录,如所有未接电话或特定号码的通话记录。 - **...