- 浏览: 176607 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dupeng41255:
问一下,。com的接口 是不是需要注册啊?我调用的时候返回说需 ...
java实现whois域名查询 -
feiyu86:
比喻的非常贴切。。
synchronized方法和代码块的使用 -
罡风笑:
贴结果:CBH 蜀汉 绝顶 刀客
开心一下 你古代的身份。超级好玩~
来源:http://lyp2002924.iteye.com/blog/491718
接收短信也是比较方便的,主要是继承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 pid = c.getString(1); //Get thread id;
String uri = "content://sms/conversations/" + pid;
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/inbox"),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
发表评论
-
Android 属性动画(Property Animation) 完全解析 (下)
2016-02-22 14:49 1068版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Android 属性动画(Property Animation) 完全解析 (上)
2016-02-22 14:47 731版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Windows系统中Maven的安装与配置以及m2eclipse插件的安装
2014-04-30 16:06 1192近期公司的一个项目需要用maven搭建,所以把maven的环 ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:51 3549来自:http://blog.csdn.net/lenghun ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:34 7来自:http://blog.csdn.net/lenghun ... -
VLC for Android on Linux
2012-07-12 14:28 1946来自:http://wiki.videolan.org/And ... -
Android模拟器对应电脑键盘快捷键
2012-01-10 00:01 1428Home键(小房子键) 在键盘上映射的是home键。 ... -
Android的gallery实现无限循环和降低选择频率
2011-07-20 17:55 1485gallery是一个很好用的控 ... -
Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2
2011-03-07 19:01 1137在使用: $ repo init -u git://An ... -
任务管理器正在运行的程序(2)
2010-12-23 14:36 1738RunningTaskInfo AndroidManifes ... -
任务管理器正在运行的程序(1)
2010-12-23 14:26 1539RunningTaskInfo 范例说明 ... -
android 监听文件和目录的创建删除移动等事件
2010-11-11 15:14 1772android.os下的FileObserver类是一个 ... -
animation知识学习
2010-10-22 14:07 2039LinearInterpolator 变化率是个常数,即 f ... -
Android 页面切换动画效果
2010-10-18 12:54 4181在Android 2.0之后有了ove ... -
android自适应屏幕方向和大小
2010-09-27 16:51 1754一:不同的layoutAndroid手机屏幕大小不一,有 ... -
Android图片处理的的一些方法
2010-08-02 18:54 63331.图片加载方法,方便用户加载图片 /**** 加载本地图片 ... -
OMA-SyncML-DataSyncProtocol-V1_1_2-20030612-A
2010-07-02 12:12 677手机联系人等信息同步中使用 -
Android取得屏幕分辨率
2010-05-31 10:32 959WindowManager windowManager = g ... -
Content Providers
2010-03-04 23:21 1203来源:http://developer.andro ... -
Android基础 : Android Content Provider[转]
2010-03-02 23:09 1110Android应用程序可以使用文件或SqlLite数据库来存储 ...
相关推荐
"android短信demo"是一个示例项目,旨在帮助开发者理解如何在Android应用中实现短信功能。这个项目可以直接导入Eclipse IDE进行运行和学习。 在Android中,短信操作主要涉及以下几个核心知识点: 1. **权限声明**...
通过这个压缩包,开发者可以学习到如何在Android应用中实现短信和MMS的基本操作,这对于构建通信相关的应用或者自动化测试是非常有价值的。同时,源码分析和实践操作也是提高编程技能的重要步骤。
通过查看源代码,我们可以学习如何将这些理论知识应用于实际的Android应用中,包括UI设计、事件处理、错误处理以及性能优化等。例如,查看发送短信时的用户界面设计,以及如何在接收到短信后更新UI或者执行其他业务...
它接受五个参数:电话号码、短信内容、发送消息的回调、成功时调用的发送消息完成的BroadcastReceiver以及失败时调用的BroadcastReceiver。例如: ```java SMSManager smsManager = SMSManager.getDefault(); ...
在Android平台上,开发一个能够发送短信的应用程序是一个常见的需求。Android Studio作为官方推荐的集成开发环境,提供了便利的工具和API来实现这一功能。...通过不断学习和实践,你将在Android开发中变得更加熟练。
在Android平台上,开发一款集成了电话、短信以及电话薄功能的应用程序是一项常见的任务。这个APP的主要目标是提供用户与通信...通过对这些文件的分析和学习,可以深入理解Android系统如何实现电话、短信和电话薄功能。
包括环境搭建教程、创建模拟器、新建helloworld程序、电话拨号器、软件部署到模拟器、短信发送器、线性布局、相对布局、日志、activity、Android进程线程及优先级、Android UI线程阻塞及优化、广播接受者、Service...
通过这个"安卓手机发送短信最简源码Demo",开发者可以学习如何在安卓应用中实现短信功能,但实际开发中还需要考虑用户体验、错误处理、权限管理等多个方面,确保功能的完整性和安全性。如果你对细节感兴趣,可以访问...
你可以通过`getDefault()`方法获取到它的实例,然后调用`sendTextMessage()`方法来发送短信,该方法接受电话号码、短信内容、发送状态回调的PendingIntent等参数。 4. **用户交互**:在实际应用中,通常需要创建一...
总的来说,这个压缩包中的类涵盖了Android短信服务的基本操作,是学习和理解短信通信机制的好起点。通过深入研究这两个类的源代码和注释,初学者不仅可以掌握短信服务的基础知识,还能了解到实际开发中的注意事项和...
本教程将深入探讨移动应用程序设计的基础,特别是如何在Android Studio环境下实现点菜单列表,并结合短信接收、服务与广播的概念,这些都是Android应用开发中的关键组件。 首先,点菜单列表(通常称为ListView或...
这个方法接受电话号码、短信内容和回调接口作为参数。如果短信需要发送到多个号码,可以多次调用此方法。 4. **处理发送结果**:为了确保短信发送成功,我们需要实现`SmsManager.Default_sms_callback`接口,处理...
在Android应用程序设计中,开发者需要掌握一系列技术和工具来创建功能丰富的移动应用。本主题主要聚焦于Android系统的架构、开发环境的...在这个过程中,不断更新的Android API和最佳实践也需要开发者持续关注和学习。
此方法接受四个参数:目标电话号码、发送短信时使用的默认短信应用的URI、短信内容以及一个PendingIntent,用于处理发送操作的结果。 ```java SmsManager smsManager = SmsManager.getDefault(); smsManager....
在发送短信方面,`SmsManager`的`sendTextMessage()`方法是最常用的功能,它接受电话号码、短信内容以及发送状态回调的BroadcastReceiver作为参数。发送短信需要权限,因此在AndroidManifest.xml中需要添加`...
21. **21-模拟器接受短信和电话以及通知提醒的使用**: 教导如何在Android模拟器中模拟接收短信、电话和通知,以便于测试应用的相应功能。 22. **22-使用广播接收器来显示用户退出**: 介绍BroadcastReceiver的概念,...
描述中的“发送短信,接受短信,查看通讯录,查看短信”这些都是短信管理器的基本功能。发送短信是指通过输入接收方的电话号码和短信内容,然后通过移动网络进行发送。接收短信则是系统自动接收到的来自其他手机或...
标题中的“跨平台的Android Message应用程序”指的是将原生的Android Messages应用移植到桌面环境,让用户可以在电脑上方便地收发短信,而不仅仅局限于手机。这个项目的目标是提供一个类似于官方应用的功能,同时...
通过这个“android6.0权限管理封装demo”,开发者可以学习如何创建一个通用的权限管理类,简化权限处理流程,使代码更整洁,同时提高用户体验。理解并正确使用这些知识点对于开发适应Android 6.0及以上系统的应用至...