短信监听 接收短信 发送短信 SMS监听
来源:互联网 发布:windows电脑登录微信 编辑:程序博客网 时间:2024/04/29 14:27
activity_main中只有两个TextView 非常简单的布局,所以就不在这里给出了 亲~
public class MainActivity extends Activity {
TextView receivenum;
TextView receivemsg;
SmsReceiver smsReceiver;
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receivenum = (TextView) findViewById(R.id.receivenumber);
receivemsg = (TextView) findViewById(R.id.receivemsg);
smsReceiver = new SmsReceiver();
SMSControl.getInstance().setSmsReceiveListener(new SmsReceiveListener() {
@Override
public void onReceiveMessage(String telNum, String msg) {
// TODO Auto-generated method stub
Log.i("xxx", "sms we go");
//拦截到得短信会在这里显示,如果在这里接着调用下面SMSControl类中发短信的方法可以将拦截到得短信发送到指定的号码上
receivenum.setText(telNum);
receivemsg.setText(msg);
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//注册广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION);
//设置优先级,比系统先接收到消息。可以接着停止广播使系统接收不到短消息
intentFilter.setPriority(900);
registerReceiver(smsReceiver , intentFilter);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
//注销广播接收器
unregisterReceiver(smsReceiver);
}
}
//广播接收器
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// 判断是系统短信;
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
// 不再往下传播;
this.abortBroadcast();
}
Log.i("xxx", "messgae received");
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages) {
String telNum = message.getDisplayOriginatingAddress();
String msg = message.getDisplayMessageBody();
//收到短信传给SMSControl类
SMSControl.getInstance().onRecvSmsMessage(telNum, msg);
}
}
}
}
public class SMSControl {
private static SMSControl instance;
private SmsReceiveListener listener;
private SMSControl(){
}
public static SMSControl getInstance(){
if(null == instance){
instance = new SMSControl();
}
return instance;
}
public void onRecvSmsMessage(String telNum, String msg){
if (null != listener){
listener.onReceiveMessage(telNum, msg);
}
}
public void setSmsReceiveListener(SmsReceiveListener l){
this.listener = l;
}
public interface SmsReceiveListener{
void onReceiveMessage(String telNum, String msg);
}
//发送一条短消息
public void sendSMS(String phonenumber,String msg,Context context){
//发送短信的类
PendingIntent pi=PendingIntent.getActivity(context, 0, new Intent(), 0);
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage(phonenumber, null, msg, pi, null);//发送信息到指定号码
}
}
还需要在Manifest中加入相关权限:
//发送消息权限
<uses-permission android:name="android.permission.SEND_SMS"/>
</uses-permission>
//接收消息权限
<uses-permission android:name="android.permission.RECEIVE_SMS">
</uses-permission>
- 短信监听 接收短信 发送短信 SMS监听
- Android 监听SMS短信
- Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信
- 监听接收短信
- Android 短信接收监听
- android广播监听接收和发送短信
- SMS短信发送/接收模块
- 短信发送状态监听
- Android监听发送短信
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- 监听接收到的短信
- 监听短信
- 监听短信
- 短信监听
- JAVA图像压缩,JAI解决之道.
- Bubble(2)
- android屏幕分辨率分类
- android中常用正则表达式
- 礼貌语言和敬称
- 短信监听 接收短信 发送短信 SMS监听
- ANDROID 中 树形结构JSON 的 遍历提取信息
- 修改Android开机画面
- Homebrew安装与使用
- [3月20日的脚本] 给用户配置文件添加Windows小工具 (VBScript)
- 静态链接
- Linux设备驱动开发详解(宋宝华)学习笔记-第一章 设备驱动概述
- Http工具类 同时 post上传 多文件到服务器
- iOS: bundle name, bundle display name, bundle identifier...