系统广播详解之接收短信

上一次讲解了系统开机自动运行的广播,这次讲解系统广播中的SMS广播。

1、编写一个系统广播接收类

public class SMSReceiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent)
	{

		if ("android.provider.Telephony.SMS_RECEIVED"
				.equals(intent.getAction()))
		{
			StringBuilder sb = new StringBuilder();
			// 接收由SMS传过来的数据
			Bundle bundle = intent.getExtras();
			// 判断是否有数据
			if (bundle != null)
			{
				//  通过pdus可以获得接收到的所有短信消息
				Object[] objArray = (Object[]) bundle.get("pdus");
				/* 构建短信对象array,并依据收到的对象长度来创建array的大小 */
				SmsMessage[] messages = new SmsMessage[objArray.length];
				for (int i = 0; i < objArray.length; i++)
				{
					messages[i] = SmsMessage
							.createFromPdu((byte[]) objArray[i]);
				}

				/* 将送来的短信合并自定义信息于StringBuilder当中 */
				for (SmsMessage currentMessage : messages)
				{
					sb.append("短信来源:");
					// 获得接收短信的电话号码
					sb.append(currentMessage.getDisplayOriginatingAddress());
					sb.append("\n------短信内容------\n");
					// 获得短信的内容
					sb.append(currentMessage.getDisplayMessageBody());
				}
			}
			Intent mainIntent = new Intent(context, Main.class);
			mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startActivity(mainIntent);
			Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();

		}
	}

}

接收短信的系统广播是

android.provider.Telephony.SMS_RECEIVED

手机在收到短信后就会发送这个广播。

2、配置Receive

	<receiver android:name="SMSReceiver">
			<intent-filter>
				<action android:name="android.provider.Telephony.SMS_RECEIVED" />
			</intent-filter>
		</receiver>

同时需要短信的相应权限

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
时间: 2024-10-23 16:17:20

系统广播详解之接收短信的相关文章

实例详解Android 获取短信会话列表

Android中的短信并没有正式的content provider可用,在官方文档中没有提供定义.不过依然可以自己定义好URI,然后查询出短信内容.例如conetent://sms则是所有短信所在的path. 要将短信按会话分类,原先我是查询出所有短信后,然后再按照thread_id分类.系统自带的短信程序包含一个会话显示界面,每个条目包含:联系人.短信数量.第一条短信等内容.当我的程序处理的短信较多时,一次查询出所有的短信就变得很慢.(如果再加上为每个会话查询联系人信息,则会更慢) 看了系统短

C#调用联通短信平台SGIP.DLL如何接收短信?有经验高手请进

问题描述 本人最近在做一个联通短信平台,用于发送和接收短信,现发送模块OK,但接收的总搞不定,请各位高手帮忙并指教!本程序参考于http://topic.csdn.net/t/20040416/10/2972009.htmlhttp://bbs.spforum.net/viewthread.php?tid=173763&extra=page%3D23发送的程序调用Startup()连接成功后直接调用Submit()进行发送OK问题1:如何做能接收到短信?对于FProcessDeliver,FPr

android 广播-android 如何接收短信

问题描述 android 如何接收短信 if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] mges = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { mges[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } for (Sms

三星手机接收短信没有提示音,如何解决?

步骤 1. 将手机中"关闭所有声音"选项关闭.     在使用手机时,可能会遇到接收短信没有提示音的情况,这不是机器故障,您可以通过以下方法解决:   1.在待机页面下,点击[应用程序].   2.点击[设定].   3.点击[我的设备].   4.向上滑动屏幕,选择[辅助功能].   5.向上滑动屏幕,将[关闭所有声音]的对钩取消.   步骤 2. 检查手机声音是否开启. 1.在待机页面下,用手指向下滑动屏幕顶帘.   2.将[静音]点为[声音].   步骤 3. 检查手机是否开启&

安卓项目接收短信问题(新手)

问题描述 安卓项目接收短信问题(新手) 在做安卓接收短信项目的时候,发送和接收的源代码是分开写吗还是一起写?想要的效果只是接收效果,然后是区别于普通短信,警告短信.因为设计毕业设计,求高手帮忙 解决方案 源码是否是分开写?这个不算问题吧,这只是看个人设计代码的方式,你的需求说的不是很清楚,不过大概简单可以这样分,java角度:1)封装要发送短信的相关信息:SenderInfo.java2)发送短信管理器:Sender.java3)接收短信的相关信息:ReceiverInfo 4)接收短信管理器R

接收短信时如何取消振动提醒?(N5100)

1.在待机页面下,点击[信息].   2.点击屏幕左下方的[菜单]键,选择[设定]. 3.向上滑动屏幕,将[振动]的对钩取消即可.   完成上述操作后,接收短信时的振动提醒就成功取消了

Android创建简单发送和接收短信应用

本文实例为大家分享了Android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下 一.接收短信 项目的结构如下:一个简单的接收和发送短信的功能 1.定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.provider.Telephony.SMS_RECEIVED 的广播,这条广播里携带着与短信相关的所有数据. // 接收短信的广播 class MessageReceiver extends BroadcastReceiver { @Overrid

短信猫编程,关于text接收短信问题

问题描述 我刚做一个短信猫的收发短信的项目,有一些不明白的地方,请教一下高手使用pud方式发送短信以后,读取接收的短信必须也使用pud方式吗,还是text方式也可以,大致操作流程是啥 解决方案 解决方案二:看短信猫的说明即可.解决方案三:我的短信猫,包装很简陋连型号和厂家都没有,这个和硬件有关系?

Galaxy Note 8.0接收短信时无声音,如何解决?(N5100)

一.将平板中"关闭所有声音"选项关闭. 1.在待机页面下,点击[应用程序]. 2.点击[设定]. 3.向上滑动屏幕,点击[辅助功能]. 4.向上滑动屏幕,将[关闭所有声音]的对钩取消.   二.检查平板声音是否开启. 1.用手指向下滑动屏幕顶帘. 2.将[静音]点为[声音].   三.通知音量是否开启. 1.按下侧边音量键,点击[小齿轮]图标. 2.将通知音量调大.   四.检查短信铃声是否设置为静音. 1.在待机模式下,点击[信息]. 2.点击左下方的[菜单]键,并点击[设定]. 3