public class MyPhoneStateListener extends PhoneStateListener {
private String[] projection = new String[] {
People._ID, People.NAME, People.NUMBER
};
public void onCallStateChanged(int state,String incomingNumber){
switch(state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d("DEBUG", "IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if(!incomingNumber.equals("")){
handleCall(incomingCall);
}
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d("DEBUG", "RINGING");
break;
}
}
public void handleCall(String incomingCall){
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL,
incomingNumber);
contactsCursor = context.getContentResolver().query(contactUri,
projection, null , null, People.NAME + " ASC");
if(contactsCursor.moveToFirst()){
int phoneNameIndex = contactsCursor.getColumnIndex(People.NAME);
String phoneNameStr = contactsCursor.getString(phoneNameIndex);
Log.d("DEBUG",phoneNameStr + " is calling");
}else{
Log.d("DEBUG","Not a contact");
}
}
}
如果要使用receive则:
<application>
.....
<receiver android:name=".ServiceReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
public class ServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyPhoneStateListener phoneListener=new MyPhoneStateListener();
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
</application>
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
分享到:
相关推荐
如果MODEM支持来电显示功能,它应该会返回确认信息,例如“OK”或者相关的状态代码。 例如: ```plaintext #CID=1 OK ``` 3. **模拟来电显示:** 为了进一步验证MODEM的来电显示功能,在另一部电话上拨打...
这个系统可能包括数据库存储来电记录、逻辑判断来确定是否报警以及与其他系统(如短信平台、邮件系统)的集成,以便多渠道发送报警信息。 5. **播放录音**:在转警成功后,系统会通过语音卡向主叫号码回拨并播放一...
在这个回调中,我们可以判断当前的通话状态,如`TelephonyManager.CALL_STATE_RINGING`表示有来电。 3. **挂断来电**: 当检测到来电时,我们可以通过反射调用`ITelephony`服务的`endCall()`方法来挂断电话。`...
**信号**:通过`RRCConnectionRequest`(Cause: Terminating Conversational Call)并伴随`PagingType1`或`PagingType2`信息,随后`RRCCONNECTIONsetup`的出现确认来电尝试。 ### Outgoing Call Attempt **定义**...
5. **频率检测**:通过比较连续样本的频率,确定信号是在高频还是低频状态,从而判断传输的比特值。 6. **解码**:根据检测到的频率变化,将比特流还原成原始数据。 Caller ID解码是接收到的2FSK信号解析出电话...
1. **与来电显示话机显示屏的接口**:用于接收主叫号码。 2. **与话机扬声器的接口**:用于接收寻呼机号码。 3. **与话机键盘和话筒的接口**:用于控制摘挂机及发出证实音。 4. **与寻呼台服务器的RS232串行口接口**...
11. **来电号码显示功能**:发送`AT+CLIP=1`启用来电号码显示功能。 12. **短信接收机制设置**:发送`AT+CNMI=2,1,0,0,0`设置短信接收上报机制。 13. **文本模式设置**:发送`AT+CMGF=0`设置文本模式。 以上步骤...
- 归属地查询是通过手机号码来确定该号码所属的运营商(例如中国移动、中国联通、中国电信)以及其所在的省份和城市。 - 这通常涉及到与数据库的交互,数据库中存储了各种手机号码段与对应的信息。 - 实现方式...
- **手持话机充电**:解释了如何进行充电以及如何判断电池状态。 - **开机**:简单介绍手持话机的开机方式。 - **使用腰夹**:展示了如何利用腰夹固定手持话机,方便携带。 #### 八、手持话机注册至基站单元 - **...
1. **状态监测**:通过监听通话状态的变化来判断何时需要更新图标。 2. **UI更新**:当通话状态发生改变时,对应的UI组件会自动更新显示状态。 3. **状态映射**:每个通话状态对应不同的图标,通过状态码映射到特定...
- **是否客户**:判断来电者是否为潜在客户。 - **来电人**:来电者的姓名。 - **来电事件**:来电的主要目的或内容。 - **是否反映至相关人员**:是否将问题反馈给了相应的负责人处理。 - **是否解决**:问题是否...
- **监听电话状态**:使用`TelephonyManager`类的`listen()`方法监听电话状态,如`PhoneStateListener.LISTEN_CALL_STATE`,当电话状态发生变化时,如来电,我们可以获取到电话号码并进行判断。 - **拦截逻辑**:...
4. AT+CPAS:返回设备活动状态,判断模块是否在线。 5. AT+CMEE:控制错误报告方式,可以选择输出详细错误信息。 6. AT+CKPD:模拟小键盘输入,用于执行特定命令。 7. AT+CCLK:管理时钟,设置或读取当前日期和时间...
根据指示灯的状态,可以判断设备的运行状况并采取相应措施。 12. **IMEI问题**:如果登录系统时提示IMEI号不存在,应联系经销商将IMEI号添加至系统账户。 13. **流量卡问题**:流量卡欠费或过期会导致服务中断,...
- **应用场景**:确定字符串或数组的大小。 ##### 2.16 得到数组成员:GetMapItem(m,index,key,value) - **功能**:从数组中获取指定键的值。 - **参数**:`m` - 数组;`index` - 键;`key` - 存储键的变量;`value...
2. **Barring of outgoing calls, Barring of incoming calls**:禁止拨出和接收来电,根据用户状态或运营商策略实施。 3. **Barring of roaming**:禁止漫游,限制用户在国外网络的使用。 4. **Barring of ...
6. **陌生来电识别**:对于自称熟人但无法提供明确身份信息的来电,尤其是涉及金钱请求的,应警惕挂断,并通过其他方式验证。 7. **银行信息处理**:银行通常不会通过短信发送链接要求修改密码,遇到这种情况,应...
- **状态报告**: 打印设备当前的状态报告。 - **日志记录**: 打印发送和接收的历史记录。 - **维护信息**: 提供维护所需的详细信息。 #### 十、设备维护 - **定期清洁**: 定期清洁机器表面和内部。 - **纸张更换**:...