`

BroadcastReceiver实时短信提醒

 
阅读更多

添加权限

 

<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


  • 大小: 149 KB
分享到:
评论

相关推荐

    BroadcastReceiver

    BroadcastReceiver使得应用可以在适当的时候执行特定的操作,例如在设备启动时自动运行服务,或者在接收到短信时进行提醒。 BroadcastReceiver有两种主要的注册方式:静态注册和动态注册。 1. 静态注册: 静态注册...

    Android 实现发短信 监听短信发送状态

    它们通常会绑定到BroadcastReceiver,当短信发送成功或失败时,BroadcastReceiver会接收到对应的广播。 创建BroadcastReceiver来监听短信状态: ```java public class SmsBroadcastReceiver extends ...

    Android SMSNotify Android 短信通知源码

    【Android SMSNotify】是一款专为Android平台设计的短信通知组件,其源码提供了一套完整的解决方案,用于帮助开发者实现应用程序中的短信提醒功能。这个组件的核心是利用Android系统的短信API,结合自定义的通知机制...

    【Android】短信应用——短信信息实时获取

    要实现实时获取新短信,可以注册一个BroadcastReceiver来监听`android.provider.Telephony.SMS_RECEIVED`广播。在BroadcastReceiver的`onReceive()`方法中,可以执行上述查询和解析步骤。记得在Activity的`onResume...

    Android短信例子大全

    总结来说,“Android短信例子大全”涵盖了Android应用处理短信的核心技术,包括使用`SmsManager`发送短信,注册BroadcastReceiver接收短信并展示通知,以及利用ContentObserver监听短信库的实时变化。这些知识对于...

    SMS.rar_android_android sms_android 短信_短信拦截

    通过理解有序广播的工作机制,开发者可以有效地控制短信的接收和处理,以实现个性化的需求,如垃圾短信过滤、重要信息提醒等。在实际开发中,应确保遵循最佳实践,尊重用户隐私,并遵守Android的权限管理规定。

    android 源码 短信收发工具

    - **费用提醒**: 虽然代码上可以方便地发送短信,但应注意提示用户这可能会产生费用。 3. **源码解析**: - `smsprovider`可能是指短信提供者(SMS Provider),即系统存储短信的SQLite数据库。在Android源码中,...

    安卓的短信管理器

    这些功能需要利用Android的BroadcastReceiver来监听短信到达事件,并通过IntentService处理短信,以避免阻塞主线程。同时,对于短信备份和恢复,开发者需要利用SQLite数据库或者云存储服务,将短信数据导出为CSV或...

    android 定时发送短信

    在Android平台上,定时发送短信是一项实用的功能,尤其适用于提醒、通知或者特定时间的沟通需求。本文将深入探讨如何实现这个功能,并围绕标题“android 定时发送短信”以及描述中的内容进行详细阐述。 首先,我们...

    Android代码-一个短信应用源码.zip

    - 当新短信到达时,应用可能需要显示通知提醒用户。同时,考虑到隐私和权限控制,应用需要适当地引导用户授予必要的权限。 7. **线程与异步处理**: - 发送短信通常在后台线程执行,以避免阻塞UI。可以使用...

    基于Android手机系统的java短信收发程序

    10. **通知机制**:当接收到短信时,可以使用Android的通知系统来提醒用户,这样即使在应用未运行的情况下,用户也能知道新短信的到来。 以上就是基于Android手机系统的Java短信收发程序涉及的关键知识点,理解并...

    自定义CheckBox 短信验证码 自动填写

    2. 注册BroadcastReceiver:创建一个BroadcastReceiver来监听接收到的短信。在接收到短信后,需要检查短信的内容,看是否包含验证码。如果匹配到,就提取验证码并保存。 3. 自动填充逻辑:当用户在验证码输入框中时...

    短信转发和源码

    这款工具的功能包括:当手机电量低于15%时自动发送提醒短信,以及对所有接收到的短信进行自动转发到用户设定的目标手机。 首先,我们要理解短信转发的基本原理。在移动通信网络中,短信是通过Short Message Service...

    【Android】短信应用——短信截获

    在Android平台上,短信应用开发是一项常见的任务,而短信截获是指在系统接收到短信后,通过自定义的BroadcastReceiver来捕获并处理这些短信。这个技术对于开发具有特定功能的应用,如安全防护、消息提醒或者自动化...

    基于Android平台的天气预报短信服务系统课程设计.doc

    - 提醒服务模块:监控天气变化,满足条件时触发短信提醒。 3. 程序开发 3.1 文献结构与用途 项目的代码组织应遵循MVC(Model-View-Controller)架构,将业务逻辑、视图显示和用户交互分离,提高代码的可维护性和可...

    一个android短信程序.源码

    10. **通知(Notifications)**:当新短信到来时,应用可能通过Notification向用户展示提醒。使用NotificationManager和NotificationCompat.Builder创建和显示通知。 综上所述,这个"短信小窝"源码涵盖了Android应用...

    android 定时发送短信源码

    最后,`CallAlarm.java`可能是用来处理来电提醒或者与拨打电话相关的功能。它可能会监听来电状态,比如通过注册`PhoneStateListener`,在电话接听或挂断时做出响应。如果这个类是用来配合定时发送短信功能,那么它...

    手机短信收发程序

    该类提供了sendTextMessage()方法用于发送文本短信,而BroadcastReceiver则用于监听并处理接收到的短信。在iOS平台上,可以利用MFMessageComposeViewController进行短信发送,而MessageUI框架则提供了接收短信的接口...

Global site tag (gtag.js) - Google Analytics