- 浏览: 126339 次
- 性别:
文章分类
最新评论
接收短信也是比较方便的,主要是继承BroadcaseReceiver 类 ,覆盖onReceive 函数:
1:相关类:
android.content.BroadcastReceiver
android.telephony.gsm.SmsMessage;
2:example code.
public class MessageDemo extends BroadcastReceiver {
private static final String strACT = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(strACT)) {
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msg = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage currMsg : msg) {
sb.append("From:");
sb.append(currMsg.getDisplayOriginatingAddress());
sb.append("\nMessage:");
sb.append(currMsg.getDisplayMessageBody());
}
}
}
}
}
3: 相关的配置
修改AndroidManifest.xml,在Activity下添加receiver节点:
<receiver android:name="MessageDemo">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
随后在application下添加节点:
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
4:使用BroadReceiver的弊端
查看BroadReceiver sdk reference , 可以了解到所有的BroadReceiver对短信的接收是无顺序的状态 ,即使是使用了Ordered broadcasts对于同等优先级别的BroadReceiver ,也会产生无顺序的行为。
所以下面介绍另一种接收短信的行为,包括其中可以进行短信的删除。
5:从数据库端监听sms的收发
//如下 主要用于内部数据库改变,向外面的界面(Activity)做反应
class SMSHandler extends Handler
{
public void handleMessage(Message msg)
{
//Handle message
}
}
// 对收到短消息后,做出的处理,这里直接删除,并没有反应到界面,所以上面的handleMessage是空的。
class SMSObserver extends ContentObserver
{
private Handle m_handle = null;
public SMSObserver(Handle handle)
{
super(handle);
m_handle = handle;
}
public void onChange(boolean bSelfChange)
{
super.onChange(bSelfChange);
//Send message to Activity
Message msg = new Message();
msg.obj = "xxxxxxxxxx";
m_handle.sendMessage(msg);
String strUriInbox = "content://sms/inbox";
Uri uriSms = Uri.parse(strUriInbox); //If you want to access all SMS, just replace the uri string to "content://sms/"
Cursor c = mContext.getContentResolver().query(uriSms, null, null, null, null);
// delete all sms here when every new sms occures.
while (c.moveToNext())
{
//Read the contents of the SMS;
for(int i; i < c.getColumnCount(); i++)
{
String strColumnName = c.getColumnName(i);
String strColumnValue = c.getString(i);
}
//Delete the SMS
String uri = "content://sms";
mContext.getContentResolver().delete(Uri.parse(uri), null, null);
}
}
}
//把基本类功能性地应用起来
ContentResolver contentResolver = getContentResolver();// Context 环境下getContentResolver()
Handler handler = new SMSHandler();
ContentObserver m_SMSObserver = new SMSObserver(handler);
contentResolver.registerContentObserver(Uri.parse("content://sms"),true, m_SMSObserver);
//Register to observe SMS in outbox,we can observe SMS in other location by changing Uri string, such as inbox, sent, draft, outbox, etc.)
// some Available Uri string for sms.
/*
String strUriInbox = "content://sms/inbox";//SMS_INBOX:1
String strUriFailed = "content://sms/failed";//SMS_FAILED:2
String strUriQueued = "content://sms/queued";//SMS_QUEUED:3
String strUriSent = "content://sms/sent";//SMS_SENT:4
String strUriDraft = "content://sms/draft";//SMS_DRAFT:5
String strUriOutbox = "content://sms/outbox";//SMS_OUTBOX:6
String strUriUndelivered = "content://sms/undelivered";//SMS_UNDELIVERED
String strUriAll = "content://sms/all";//SMS_ALL
String strUriConversations = "content://sms/conversations";//you can delete one conversation by thread_id
String strUriAll = "content://sms"//you can delete one message by _id
*/
REMEBER: must request following permission
1) Read SMS
<uses-permssion android:name="android.permission.READ_SMS" />
2) Delete/Modify/Send SMS
<uses-permssion android:name="android.permission.WRITE_SMS" />
in AndroidManifest.xml
1:相关类:
android.content.BroadcastReceiver
android.telephony.gsm.SmsMessage;
2:example code.
public class MessageDemo extends BroadcastReceiver {
private static final String strACT = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(strACT)) {
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msg = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage currMsg : msg) {
sb.append("From:");
sb.append(currMsg.getDisplayOriginatingAddress());
sb.append("\nMessage:");
sb.append(currMsg.getDisplayMessageBody());
}
}
}
}
}
3: 相关的配置
修改AndroidManifest.xml,在Activity下添加receiver节点:
<receiver android:name="MessageDemo">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
随后在application下添加节点:
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
4:使用BroadReceiver的弊端
查看BroadReceiver sdk reference , 可以了解到所有的BroadReceiver对短信的接收是无顺序的状态 ,即使是使用了Ordered broadcasts对于同等优先级别的BroadReceiver ,也会产生无顺序的行为。
所以下面介绍另一种接收短信的行为,包括其中可以进行短信的删除。
5:从数据库端监听sms的收发
//如下 主要用于内部数据库改变,向外面的界面(Activity)做反应
class SMSHandler extends Handler
{
public void handleMessage(Message msg)
{
//Handle message
}
}
// 对收到短消息后,做出的处理,这里直接删除,并没有反应到界面,所以上面的handleMessage是空的。
class SMSObserver extends ContentObserver
{
private Handle m_handle = null;
public SMSObserver(Handle handle)
{
super(handle);
m_handle = handle;
}
public void onChange(boolean bSelfChange)
{
super.onChange(bSelfChange);
//Send message to Activity
Message msg = new Message();
msg.obj = "xxxxxxxxxx";
m_handle.sendMessage(msg);
String strUriInbox = "content://sms/inbox";
Uri uriSms = Uri.parse(strUriInbox); //If you want to access all SMS, just replace the uri string to "content://sms/"
Cursor c = mContext.getContentResolver().query(uriSms, null, null, null, null);
// delete all sms here when every new sms occures.
while (c.moveToNext())
{
//Read the contents of the SMS;
for(int i; i < c.getColumnCount(); i++)
{
String strColumnName = c.getColumnName(i);
String strColumnValue = c.getString(i);
}
//Delete the SMS
String uri = "content://sms";
mContext.getContentResolver().delete(Uri.parse(uri), null, null);
}
}
}
//把基本类功能性地应用起来
ContentResolver contentResolver = getContentResolver();// Context 环境下getContentResolver()
Handler handler = new SMSHandler();
ContentObserver m_SMSObserver = new SMSObserver(handler);
contentResolver.registerContentObserver(Uri.parse("content://sms"),true, m_SMSObserver);
//Register to observe SMS in outbox,we can observe SMS in other location by changing Uri string, such as inbox, sent, draft, outbox, etc.)
// some Available Uri string for sms.
/*
String strUriInbox = "content://sms/inbox";//SMS_INBOX:1
String strUriFailed = "content://sms/failed";//SMS_FAILED:2
String strUriQueued = "content://sms/queued";//SMS_QUEUED:3
String strUriSent = "content://sms/sent";//SMS_SENT:4
String strUriDraft = "content://sms/draft";//SMS_DRAFT:5
String strUriOutbox = "content://sms/outbox";//SMS_OUTBOX:6
String strUriUndelivered = "content://sms/undelivered";//SMS_UNDELIVERED
String strUriAll = "content://sms/all";//SMS_ALL
String strUriConversations = "content://sms/conversations";//you can delete one conversation by thread_id
String strUriAll = "content://sms"//you can delete one message by _id
*/
REMEBER: must request following permission
1) Read SMS
<uses-permssion android:name="android.permission.READ_SMS" />
2) Delete/Modify/Send SMS
<uses-permssion android:name="android.permission.WRITE_SMS" />
in AndroidManifest.xml
发表评论
-
react-native github 中的eXamples中的示例工程运行方法。
2016-05-13 17:35 6511 从github中 https://github.com/ ... -
android textureView的重大进步
2016-04-13 17:01 2160android TextureView 的出现解决了几大问 ... -
android 陀螺器,加速度感应测试数据
2016-04-13 08:52 987加速度传感器又叫G-sensor,返回x、y、z三轴的 ... -
android.permission.SYSTEM_ALERT_WINDOW
2016-04-12 16:05 799此权限用实现 在android手机上出现的浮在窗口上的快捷 ... -
fyuse 3d拍摄
2016-04-12 14:44 636fyuse : 附件为反编译的dex文件. -
diceplayer android版本可以实现 快速播放功能
2016-04-06 17:37 669android 版本的diceplayer 可以实现快速播放 ... -
anroid 各种感应介绍
2016-04-06 11:41 385http://blog.csdn.net/mad1989/ar ... -
videoview 刷新不及时的问题.
2016-03-29 13:17 1025androi videoview 在做开发的时候, 前个页面 ... -
android 解析带有_的 http url域名,出现解析错误的问题
2016-03-29 13:13 1610在 android中 访问带有_ 的域名的时候,例如js_s ... -
android mediaplayer 播放错误 -32
2016-03-23 14:33 3发现android4.4 meizu mx4pro 出现播放错 ... -
android 头像圆圈显示
2016-03-16 17:22 702public Bitmap toRoundBitmap(Bi ... -
android 获取签名 及其摘要
2016-03-16 14:17 760http://www.cnblogs.com/sunzn/ar ... -
android 自定义无黑边对话框输入框无法输入的问题
2016-03-16 11:25 785http://wbj05791467.blog.163.com ... -
andorid textview link text
2016-02-19 18:53 646android 在textview 解析自定义各种链接url ... -
不应该建立所谓的下来刷新webview
2016-02-18 10:23 697本来以为做一个下拉刷新功能的 webview 是一个好的功 ... -
在listview 滚动列表中实现 视频播放
2016-02-13 19:23 1052http://finalshares.com/read-698 ... -
okhttp 详解文章
2015-12-31 17:51 771http://www.cnblogs.com/ct2011/p ... -
android so常识
2015-12-31 12:43 394http://www.kejik.com/article/21 ... -
android studio 新建工程出现的问题解决
2015-12-31 10:48 860解决Android中No resource found th ... -
GitHub 上最火的40个Android 开源
2015-09-25 10:56 783http://www.360doc.com/content/1 ...
相关推荐
关于短信接收处理方面,当前已经有一些app做的比较好了,比如发给手机发验证码验证的问题,很多app在发出验证码后,不需要输入,就直接可以跳过验证界面,这就是用到了对接收到的短信的处理。至于短信的发送,也没...
在Android平台上,短信接收器...以上就是使用Eclipse开发Android短信接收器的完整流程,以及相关的技术要点。在实际应用中,可以根据需求扩展功能,例如,将接收到的短信存储到数据库、发送通知或者进行其他业务处理。
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在...
本文将详细介绍如何在Android中实现短信接收监听,并着重讲解如何处理动态权限的申请。 首先,我们来看如何添加短信的动态权限。在AndroidManifest.xml文件中,你需要声明需要使用的权限: ```xml ...
在这个例子中,我们需要监听的是短信接收到的广播,对应的Intent Action是`"android.provider.Telephony.SMS_RECEIVED"`: ```java @Override public void onReceive(Context context, Intent intent) { if ...
这个名为"sms_onReceive_liu.zip"的压缩包文件包含了一个与Android短信接收相关的Java源代码文件——"sms_onReceive_liu.java"。这个类主要用于监听并处理接收到的短信事件。 首先,我们要理解在Android中如何处理...
【描述】提到的内容表明,这个压缩包提供的是实现Android短信接收和发送功能的源代码。对于开发者来说,这是一个宝贵的资源,可以帮助他们理解和学习如何在Android应用中集成短信服务,或者用于开发自己的短信应用。...
在本实验中,我们探讨的是如何创建一个自定义的BroadcastReceiver来接收短信,并根据短信内容展示相应的GIF动画。 首先,我们需要理解BroadcastReceiver的工作原理。BroadcastReceiver是一个被动服务,当系统发出...
这是一个专门用于监听短信接收广播的组件,当有短信到达时,系统会发送一个含有短信数据的广播,而广播接收器就会响应这个广播,从而实现监听短信的效果。注册广播接收器的代码如下: <receiver android:name="....
BroadcastReceiver 可以接收各种广播信息,例如短信接收、邮件接收、电话呼入等。这些广播信息可以在应用程序中被接收和处理,从而提供更加智能和实时的用户体验。 在项目实践中,我们可以定义一个 ...
Android提供了BroadcastReceiver,可以监听系统广播事件,其中包括短信接收事件。创建一个BroadcastReceiver,并重写`onReceive`方法,当接收到短信时,该方法会被调用。注册BroadcastReceiver时,需要添加对应的...
"Android短信收发流程分析" Android 短信收发流程是 Android 系统源码中一个非常重要的模块,它负责处理短信的发送和接收过程。在这个流程中,涉及到多个组件和类别,包括 ComposeMessageActivity、WorkingMessage...
demo 主要功能是接收短信,支持android 4.4以上版本和android 4.4以下版本。在写代码时也在网上找了好多类似的代码,但是没有找到一个完整的适合新手学习的,都是一些只支持android4.4以下的android系统应用demo,...
在Android系统中,广播接收器(Broadcast Receiver)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。本资源提供的“android 广播接收完整源码”应该包含了一个实现广播接收功能的完整...
【Android SMSNotify】是一款专为Android...通过对`SMSNotify`源码的学习和理解,开发者不仅可以掌握Android短信通知的实现方式,还能深入了解Android系统的组件交互、权限管理、数据存储以及性能优化等多方面知识。
虽然不能直接触发系统的短信接收通知,但在某些情况下,可以通过以下方法模拟接收: - **使用广播接收器**:创建一个BroadcastReceiver,监听`ACTION_NEW_OUTGOING_CALL`或`SMS_RECEIVED`广播。当接收到这些广播时...
短信接收器是移动应用程序的一部分,它注册为Android系统中的BroadcastReceiver,用于监听并处理到来的短信。当短信到达手机时,Android系统会发送一个广播意图(Broadcast Intent),这个接收器捕获该意图,然后...
// 定义接收短信的BroadcastReceiver private static BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { switch (getResultCode()) { ...
以上就是实现一个简易的Android短信管理器涉及的主要技术点,涵盖了Android的权限管理、广播机制、SMSManager、UI设计以及数据库操作等多个方面。通过学习和实践这些知识点,开发者可以构建出功能完善的短信应用。
这个"发短信接收简单例子"应该是一个简单的Android应用示例,它教你如何在自定义的用户界面中发送和接收短信,同时避免使用系统的默认短信接收界面。 首先,让我们深入了解一下`SMSMessage`类。`SMSMessage`是...