从上一篇的BroadcastReceiver的学习及功能的了解,对于短信广播的处理学起来会更容易一些,只是一些广播的配置有点改变,下面我们一起学习吧,如果有错误希望亲们及时给我指正,或者提给我更好的方法。
呵呵,亲爱的情侣们,若不放心自己男或女朋友,可以随时监听谁给她或他发了短信,短信内容是什么,谁发的都能知道,赶快自己也弄一个吧!!!
1。首先编写短信广播接收类必须先配置AndroidManifest.xml
(1)注册短信接收者,必须统一设置action的name为:android.provider.Telephony.SMS_RECEIVED
并且设置用户权限:允许接收短信 android.permission.RECEIVE_SMS
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
(2)手动编码注册短信接收者
IntentFilter filter=new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
Application app=new Application();
//编码注短信接收者:registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
app.registerReceiver(this, filter);
//取消接收者,this 指当前的接收者SMS
app.unregisterReceiver(this);
2.编写短信接收者SMS
这里只是发短信没有界面布局,结果只输出,所以可以不创建activity
public class SMS extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] messes = (Object[]) bundle.get("pdus");
for (Object oo : messes) {
byte[] sms = (byte[]) oo;
SmsMessage smsMessage = SmsMessage.createFromPdu(sms);
// 发短信电话
String phone = smsMessage.getOriginatingAddress();
// 短信内容
String shortmess = smsMessage.getMessageBody();
// 发送时间
SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = f.format(smsMessage.getTimestampMillis());
System.out.println("发送号码:" + phone + " 内容:" + shortmess
+ " 时间:" + time);
}
}
}
3.打开android虚拟机,打开两个虚拟机,其中一个运行项目,另一个给这个发短信,则会打印出发短信的号码、内容及发送时间
嘿嘿,亲们都明白了嘛,如果有疑问或者错误的地方,请提问出来吧