添加权限
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class SmsReceiver extends BroadcastReceiver {
private NotificationManager myNotiManager;
/* 声明静态字符串,并使用android.provider.Telephony.SMS_RECEIVED作为Action为短信的依据 */
private static final String mACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {
myNotiManager = (NotificationManager)context.getSystemService("notification");
/* 判断传来Intent是否为短信 */
if (intent.getAction().equals(mACTION)) {
String smsTitle = "" , smsContent = "";
/* 接收由Intent传来的数据 */
Bundle bundle = intent.getExtras();
/* 判断Intent是有资料 */
if (bundle != null) {
/*
* pdus为 android内建短信参数 identifier 透过bundle.get("")并传一个包含pdus的对象
*/
Object[] myOBJpdus = (Object[]) bundle.get("pdus");
/* 建构短信对象array,并依据收到的对象长度来建立array的大小 */
SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
for (int i = 0; i < myOBJpdus.length; i++) {
messages[i] = SmsMessage
.createFromPdu((byte[]) myOBJpdus[i]);
}
/* 将送来的短信合并自定义信息于StringBuilder当中 */
for (SmsMessage currentMessage : messages) {
/* 来讯者的电话号码 */
smsTitle = smsTitle + currentMessage.getDisplayOriginatingAddress();
/* 取得传来讯息的BODY */
smsContent = smsContent + currentMessage.getDisplayMessageBody();
}
}
setNotiType(context, R.drawable.doc, smsTitle , smsContent);
}
}
public void setNotiType(Context context, int iconId, String title , String content) {
/*
* 建立新的Intent,作为点选Notification留言条时, 会执行的Activity
*/
Intent notifyIntent = new Intent(context, Main.class);// 单击Notification转跳至MyNotification.class
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
/* 建立PendingIntent作为设定递延执行的Activity */
PendingIntent appIntent = PendingIntent.getActivity(context, 0,
notifyIntent, 0);
/* 建立Notication,并设定相关参数 */
Notification myNoti = new Notification();
/* 设定statusbar显示的icon */
myNoti.icon = iconId;
/* 设定statusbar显示的文字讯息 */
//myNoti.tickerText = content;
/* 设定notification发生时同时发出预设声音 */
myNoti.defaults = Notification.DEFAULT_SOUND;
// 屏幕亮myNoti.defaults = Notification.DEFAULT_LIGHTS;
// 震动myNoti.defaults = Notification.DEFAULT_VIBRATE;
// 包括铃声、屏幕亮和震动myNoti.defaults = Notification.DEFAULT_ALL;
/* 设定Notification留言条的参数 */
myNoti.setLatestEventInfo(context, "来自 " + title + "的短信", "内容:" + content, appIntent);
/* 送出Notification */
myNotiManager.notify(0, myNoti);
}
}
manifest.xml
<receiver android:name=".SmsReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
注意:这个receiver可以跟桌面工具的receiver共存,并且都可以拥有intent-filter