添加权限
<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有两种主要的注册方式:静态注册和动态注册。 1. 静态注册: 静态注册...
它们通常会绑定到BroadcastReceiver,当短信发送成功或失败时,BroadcastReceiver会接收到对应的广播。 创建BroadcastReceiver来监听短信状态: ```java public class SmsBroadcastReceiver extends ...
【Android SMSNotify】是一款专为Android平台设计的短信通知组件,其源码提供了一套完整的解决方案,用于帮助开发者实现应用程序中的短信提醒功能。这个组件的核心是利用Android系统的短信API,结合自定义的通知机制...
要实现实时获取新短信,可以注册一个BroadcastReceiver来监听`android.provider.Telephony.SMS_RECEIVED`广播。在BroadcastReceiver的`onReceive()`方法中,可以执行上述查询和解析步骤。记得在Activity的`onResume...
总结来说,“Android短信例子大全”涵盖了Android应用处理短信的核心技术,包括使用`SmsManager`发送短信,注册BroadcastReceiver接收短信并展示通知,以及利用ContentObserver监听短信库的实时变化。这些知识对于...
通过理解有序广播的工作机制,开发者可以有效地控制短信的接收和处理,以实现个性化的需求,如垃圾短信过滤、重要信息提醒等。在实际开发中,应确保遵循最佳实践,尊重用户隐私,并遵守Android的权限管理规定。
- **费用提醒**: 虽然代码上可以方便地发送短信,但应注意提示用户这可能会产生费用。 3. **源码解析**: - `smsprovider`可能是指短信提供者(SMS Provider),即系统存储短信的SQLite数据库。在Android源码中,...
这些功能需要利用Android的BroadcastReceiver来监听短信到达事件,并通过IntentService处理短信,以避免阻塞主线程。同时,对于短信备份和恢复,开发者需要利用SQLite数据库或者云存储服务,将短信数据导出为CSV或...
在Android平台上,定时发送短信是一项实用的功能,尤其适用于提醒、通知或者特定时间的沟通需求。本文将深入探讨如何实现这个功能,并围绕标题“android 定时发送短信”以及描述中的内容进行详细阐述。 首先,我们...
- 当新短信到达时,应用可能需要显示通知提醒用户。同时,考虑到隐私和权限控制,应用需要适当地引导用户授予必要的权限。 7. **线程与异步处理**: - 发送短信通常在后台线程执行,以避免阻塞UI。可以使用...
10. **通知机制**:当接收到短信时,可以使用Android的通知系统来提醒用户,这样即使在应用未运行的情况下,用户也能知道新短信的到来。 以上就是基于Android手机系统的Java短信收发程序涉及的关键知识点,理解并...
2. 注册BroadcastReceiver:创建一个BroadcastReceiver来监听接收到的短信。在接收到短信后,需要检查短信的内容,看是否包含验证码。如果匹配到,就提取验证码并保存。 3. 自动填充逻辑:当用户在验证码输入框中时...
这款工具的功能包括:当手机电量低于15%时自动发送提醒短信,以及对所有接收到的短信进行自动转发到用户设定的目标手机。 首先,我们要理解短信转发的基本原理。在移动通信网络中,短信是通过Short Message Service...
在Android平台上,短信应用开发是一项常见的任务,而短信截获是指在系统接收到短信后,通过自定义的BroadcastReceiver来捕获并处理这些短信。这个技术对于开发具有特定功能的应用,如安全防护、消息提醒或者自动化...
- 提醒服务模块:监控天气变化,满足条件时触发短信提醒。 3. 程序开发 3.1 文献结构与用途 项目的代码组织应遵循MVC(Model-View-Controller)架构,将业务逻辑、视图显示和用户交互分离,提高代码的可维护性和可...
10. **通知(Notifications)**:当新短信到来时,应用可能通过Notification向用户展示提醒。使用NotificationManager和NotificationCompat.Builder创建和显示通知。 综上所述,这个"短信小窝"源码涵盖了Android应用...
最后,`CallAlarm.java`可能是用来处理来电提醒或者与拨打电话相关的功能。它可能会监听来电状态,比如通过注册`PhoneStateListener`,在电话接听或挂断时做出响应。如果这个类是用来配合定时发送短信功能,那么它...
该类提供了sendTextMessage()方法用于发送文本短信,而BroadcastReceiver则用于监听并处理接收到的短信。在iOS平台上,可以利用MFMessageComposeViewController进行短信发送,而MessageUI框架则提供了接收短信的接口...