/// 获取电话管理器
tmg = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
sharedPreferences = getSharedPreferences(Constant.PREFERENCESNAME,
MODE_PRIVATE);
/**
* 发送短信
*
* @param incomingNumber
*/
protected void senMsg(String incomingNumber) {
String num = sharedPreferences.getString("numb", null);
SmsManager smsManager = SmsManager.getDefault();
if (num != null && num.length() > 0) {
smsManager.sendTextMessage(num, null, incomingNumber + "来电", null,
null);
}
}
//短信广播,并取出短信
package com.example.phonelistener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class MsmReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
Constant.PREFERENCESNAME, Context.MODE_PRIVATE);
// 收到短信,并取出短信内容
Bundle bundle = intent.getExtras();
Object[] object = (Object[]) bundle.get("pdus");
System.out.println("====================================");
SmsMessage[] messages = new SmsMessage[object.length];
for (int i = 0; i < object.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) object[i]);
}
for (int i = 0; i < messages.length; i++) {
String messageBody = messages[i].getMessageBody();
String fromNum = messages[i].getDisplayOriginatingAddress();
if (messageBody.equals("ring")
&& sharedPreferences.getBoolean("msmlistener", false)) {
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.ring);
mPlayer.start();
abortBroadcast();
}
System.out.println(messageBody + "============================");
if (messageBody.equals("callme")
&& sharedPreferences.getBoolean("msmlistener", false)) {
// 回拨电话
Intent callIntent = new Intent(Intent.ACTION_CALL,
Uri.parse("tel://" + fromNum));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);
abortBroadcast();
}
}
}
}
//添加权限
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
分享到:
相关推荐
为了实现“打电话”和“发短信”的功能,开发者需要使用到Android的权限管理,例如`<uses-permission>`标签在AndroidManifest.xml中声明打电话和发送短信所需的权限。此外,还需要使用到Android提供的Intent机制来...
对于一些敏感的系统广播,如接打电话、发送短信等,需要在AndroidManifest.xml中添加相应的权限声明。 在实际应用中,BroadcastReceiver可以用来实现很多实用功能,例如检测网络状态、监控电池电量、接收系统消息等...
在Android平台上,开发一个定时打电话的小程序涉及到多个关键知识点,包括Android系统服务、AlarmManager、BroadcastReceiver、Intent以及电话权限管理。以下是对这些知识点的详细解释: 1. **Android系统服务...
在Android平台上实现定时打电话的功能,是一项涉及多个技术层面的任务,主要涵盖了Android系统服务、广播接收器、AlarmManager、Intent以及电话APIs等关键组件。以下是对这个毕业设计项目中的核心知识点的详细说明:...
在实现定时打电话的功能时,我们需要创建一个自定义的`BroadcastReceiver`,在接收到`AlarmManager`发出的广播时,调用系统的拨号API进行电话拨打。 ```java public class CallReceiver extends BroadcastReceiver ...
4. **短信接收**:在Android中,可以注册BroadcastReceiver监听SMS_RECEIVED广播,当接收到短信时,广播接收器会触发并处理短信内容。iOS则需要在应用的Info.plist文件中声明权限,并通过...
在定时打电话的应用中,我们通常创建一个BroadcastReceiver来接收由AlarmManager发出的广播,然后启动IntentService进行拨号。 5. **电话API**:Android提供了PhoneAccount、InCallService等接口,用于与电话功能...
这时可以注册一个`BroadcastReceiver`来接收`TelephonyManager`发出的广播事件,如`ACTION_PHONE_STATE_CHANGED`。 4. **TelephonyManager** `TelephonyManager`类提供了电话相关的功能,如获取手机状态、SIM卡...
在Android平台上实现定时打电话的功能,通常涉及到Android系统的AlarmManager服务、BroadcastReceiver以及Intent等关键组件。下面我们将深入探讨这些知识点。 1. **AlarmManager**: AlarmManager是Android系统提供...
"Android 定时打电话功能源码"很可能是包含了一个完整的Android项目,包括了Activity(主界面)、Service(负责拨打电话)、BroadcastReceiver(用于接收AlarmManager的广播)以及相关布局文件。源码中会详细展示...
`BroadcastReceiver`是Android中接收广播事件的组件,可以监听系统或自定义的广播消息。在这个源码中,可能会有一个注册了的`BroadcastReceiver`来监听电话拨号的广播事件。 3. **Intent**: `Intent`是Android中...
此外,为了防止恶意应用滥用短信监听,Android在某些版本之后引入了前台服务的要求,即监听短信的广播接收器必须与一个正在运行的前台服务关联,以提供用户可见的通知。 学习这个`SMSListener`源码,你可以了解到...
这里我们关注的是“打电话”功能的源码,这是一个基础且至关重要的功能,尤其是在开发通信类应用时。下面我们将深入探讨安卓源码中与打电话相关的知识点。 首先,让我们了解安卓系统如何处理打电话的操作。当用户...
在安卓(Android)平台上开发应用时,有时会需要实现一些特殊功能,比如定时打电话。这个压缩包中的资源提供了实现这一功能的源代码。通过分析这些文件,我们可以学习如何在Android应用中集成定时任务并执行拨打电话...
`Intent`是Android中用于启动活动(Activity)、服务(Service)或者广播接收器(BroadcastReceiver)的类,它携带了执行特定操作的信息。在拨打电话的场景中,我们创建一个`Intent`实例,并设置其`ACTION_CALL`动作...
- 为了实时监听设备状态,MonitorPhone可能会注册BroadcastReceiver来响应电话状态变化、短信接收等广播事件。 6. **Location API**: - Android提供了Location API来获取设备的GPS或网络定位信息,应用可能通过...