- 浏览: 229279 次
- 性别:
- 来自: 北京
最新评论
-
qq452739204:
如果构造的报文大于mtu值,是否需要分片之后再发送出去列?
Linux内核构造数据包并发送(二)(dev_queue_xmit方式) -
xingzengmou:
你好,我搞的原理跟你差不多,但播放的时候有papapa的声音, ...
AudioRecord和AudioTrack类的使用 -
wenjiefeng:
楼主,你有录制pcm格式和播放pcm格式的录音器的demo吗, ...
AudioRecord和AudioTrack类的使用 -
lovepeakingA:
...
AudioRecord和AudioTrack类的使用 -
ZaneLee007:
假的,不学无术
Android禁用键盘的所有按键
一、 android sms所要的权限
Java代码
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
二、 sms发送
与短消息发送相关的类为:SmsManager.
Java代码
SmsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
SmsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
参数说明:
destinationAddress the address to send the message to
scAddress is the service center address or null to use the current default SMSC
text the body of the message to send
sentIntent if not NULL this PendingIntent is broadcast when the message is sucessfully sent, or failed. The result code will be Activity.RESULT_OK for success, or one of these errors: RESULT_ERROR_GENERIC_FAILURE RESULT_ERROR_RADIO_OFF RESULT_ERROR_NULL_PDU. The per-application based SMS control checks sentIntent. If sentIntent is NULL the caller will be checked against all unknown applications, which cause smaller number of SMS to be sent in checking period.
deliveryIntent if not NULL this PendingIntent is broadcast when the message is delivered to the recipient. The raw pdu of the status report is in the extended data ("pdu").
其中两个PendingIntent模式为:
Java代码
PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
Intent deliveryIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
并注册接收器,根据getResultCode()来判断:
Java代码
registerReceiver(sendReceiver);
registerReceiver(deliveredReceiver);
registerReceiver(sendReceiver);
registerReceiver(deliveredReceiver);
三、 sms接收
根据接收时广播的android.provider.Telephony.SMS_RECEIVED的Intent.我们可以扩展一个BroadcastReceiver来接收sms.
传递的Intent包含pdus数据。相关代码如下:
Java代码
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
四、 采用ContentObserver监控短信数据库
上面方法三中并不能对sms进行更新和删除操作,要做这些操作需要用ContentObserver来监控短信数据库的变化来进行相关操作。
1. 短信数据库的ContentUri
Java代码
public final static String SMS_URI_ALL = "content://sms/"; //0
public final static String SMS_URI_INBOX = "content://sms/inbox";//1
public final static String SMS_URI_SEND = "content://sms/sent";//2
public final static String SMS_URI_DRAFT = "content://sms/draft";//3
public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
public final static String SMS_URI_FAILED = "content://sms/failed";//5
public final static String SMS_URI_QUEUED = "content://sms/queued";//6
public final static String SMS_URI_ALL = "content://sms/"; //0
public final static String SMS_URI_INBOX = "content://sms/inbox";//1
public final static String SMS_URI_SEND = "content://sms/sent";//2
public final static String SMS_URI_DRAFT = "content://sms/draft";//3
public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
public final static String SMS_URI_FAILED = "content://sms/failed";//5
public final static String SMS_URI_QUEUED = "content://sms/queued";//6
2. sms主要结构:
Java代码
_id => 短消息序号 如100
thread_id => 对话的序号 如100
address => 发件人地址,手机号.如+8613811810000
person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
date => 日期 long型。如1256539465022
protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
read => 是否阅读 0未读, 1已读
status => 状态 -1接收,0 complete, 64 pending, 128 failed
type => 类型 1是接收到的,2是已发出
body => 短消息内容
service_center => 短信服务中心号码编号。如+8613800755500
_id => 短消息序号 如100
thread_id => 对话的序号 如100
address => 发件人地址,手机号.如+8613811810000
person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
date => 日期 long型。如1256539465022
protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
read => 是否阅读 0未读, 1已读
status => 状态 -1接收,0 complete, 64 pending, 128 failed
type => 类型 1是接收到的,2是已发出
body => 短消息内容
service_center => 短信服务中心号码编号。如+8613800755500
3. 步骤
a. 写一个类继承ContentObserver
Java代码
public class SMSDBObserver extends ContentObserver
public class SMSDBObserver extends ContentObserver
重写onChange方法(里面对INBOX, SEND两个URI进行处理)
Java代码
public void onChange(boolean selfChange)
Uri smsInBox = Uri.parse(SMS_URI_INBOX);
Cursor c = ctx.getContentResolver().query(uriSms, null, selection, selectionArgs, sortOrder);
//对字段进行操作。。。
//ctx.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
//ctx.getContentResolver().update(uri, values, where, selectionArgs);
//ctx.getContentResolver().delete(url, where, selectionArgs);
//ctx.getContentResolver().insert(url, values);
public void onChange(boolean selfChange)
Uri smsInBox = Uri.parse(SMS_URI_INBOX);
Cursor c = ctx.getContentResolver().query(uriSms, null, selection, selectionArgs, sortOrder);
//对字段进行操作。。。
//ctx.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
//ctx.getContentResolver().update(uri, values, where, selectionArgs);
//ctx.getContentResolver().delete(url, where, selectionArgs);
//ctx.getContentResolver().insert(url, values);
b. 在Activity中注册短信监控
Java代码
// 监控短信
smsObserver = new SMSDBObserver(new Handler(), this, app);
getContentResolver().registerContentObserver(Uri.parse(SMSDBObserver.SMS_URI_ALL), true, smsObserver);
// 监控短信
smsObserver = new SMSDBObserver(new Handler(), this, app);
getContentResolver().registerContentObserver(Uri.parse(SMSDBObserver.SMS_URI_ALL), true, smsObserver);
注:
想监控已发送的,就要监控content://sms/send.
想删除时contentUri只能是content://sms/或content://sms/ conversations
发表评论
-
从assets文件夹中读取txt文件
2010-08-23 14:37 2659Android除了提供/res目录存放资源文件外,在/asse ... -
AndroidManifest.xml文件综合详解
2010-08-18 09:59 1069一,重要性AndroidManifest. ... -
总结Content Provider的使用
2010-08-18 09:47 1706Android中的Content provider机制可支持在 ... -
Android动态创建一个个组件
2010-08-12 00:11 2943Android 界面编程有两种基本的方法,一种是在代码中,动态 ... -
LinearLayout+EditText+Button+AlertDialog简单应用
2010-08-11 22:08 2268这个简单的例子是EditText中默认有个字符串text,单击 ... -
android实现底部菜单栏
2010-08-11 20:43 1744android程序,许多时候需要菜单栏显示在底部或顶部,但是没 ... -
Android permission 访问权限大全
2010-08-11 20:41 1012androidmanifest.xml中声明相关权限请求, 完 ... -
Android的几种布局方式
2010-08-11 20:27 4961通常我们开发的应用程序都是需要具有友好的用户界面,那么Andr ... -
Android的系统架构
2010-08-11 20:10 1566Android的系统架构是怎么样的呢?从下图我们可以从整体上有 ... -
Android响应按钮的程序结构
2010-08-11 20:07 1946图形界面的按钮是最普通的控件,Android响应按钮的程序结构 ... -
AudioRecord和AudioTrack类的使用
2010-08-11 20:06 14902AudioRecord和AudioTrack类 ... -
Android资源文件
2010-08-10 10:34 1365资源是您在代码中使用 ... -
SMS Messaging in Android(接1)
2010-08-09 00:12 1092就是它了!测试应用程序,按下F11。为每个Android模拟器 ... -
SMS Messaging in Android(1)
2010-08-08 23:54 1765可以安全的说,在过去的近20年里卖的每一款移动电话都拥有SMS ... -
Android Button按钮控件美化方法
2010-08-08 21:11 2812对于Android自带的Button按钮控件很多网友感觉不是很 ... -
Android布局之AbsoluteLayout
2010-08-08 18:34 1838AbsoluteLayout也就是绝对布局,又称坐标布局,在布 ... -
Android移植: wifi设计原理(源码分析)
2010-08-08 02:22 2346初始化在 SystemServer 启动的时候,会生成一个 ... -
Android禁用键盘的所有按键
2010-08-07 23:52 4259KeyguardManager keyguardManager ...
相关推荐
Android SMS 发送 接收及格式
在Android系统中,短信服务(SMS)是移动应用开发中不可或缺的一部分,允许用户发送和接收文本消息。本文将深入探讨如何在Android平台上实现短信的发送与接收功能。 首先,我们需要了解Android SMS服务的基础知识。...
这个名为"Sms.rar"的压缩包包含了一个关于Android SMS(Short Message Service)功能的源码实现,特别提到了MMS(Multimedia Messaging Service)的支持,这允许发送和接收包含多媒体内容的消息。下面将详细解释这些...
本文将详细讲解如何实现基于Android的SMS短信的接收与发送功能。 一、短信发送 1. 权限声明: 首先,为了能够发送短信,需要在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name=...
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在...
Android 短信SMS发送代码流程 Android 短信SMS发送代码流程是 Android 操作系统中的一种重要功能,允许用户发送短信给其他用户。本文将详细介绍 Android 短信SMS发送代码流程的实现机制。 Messaging 应用层 在 ...
【标题】"Android_SMS.rar" 是一个包含有关Android短信功能的源代码压缩包,主要针对的是Android平台上短信的发送和接收。"Android_SMS_android_apk" 暗示了这可能是一个已经打包好的APK应用,可以安装在Android设备...
### Android发送和接收短信的方法详解 在Android应用开发过程中,短信功能是常见需求之一,无论是用于用户验证、通知推送还是其他交互场景,掌握如何在Android应用程序中发送和接收短信都是必不可少的技能。本文将...
SuperSMS很可能就是我们要找的SMS发送工具的APK文件,用户可以在Android设备上安装它来使用这个工具。安装过程通常涉及在设备上开启未知来源的应用安装权限,然后通过文件管理器找到APK文件并点击安装。 关于SMS...
例如,`<uses-permission android:name="android.permission.SEND_SMS" />`用于发送短信,`<uses-permission android:name="android.permission.RECEIVE_SMS" />`用于接收短信。从Android 6.0(API级别23)开始,还...
在Android系统中,短信服务(SMS)是移动设备通信的一个核心部分,它允许用户发送、接收和管理文本消息。 描述中的“android 收取短信时间,内容等”提示我们,这个压缩包可能包含了处理短信接收时的时间记录以及...
由于Android 6.0及以后版本引入了运行时权限的概念,因此,在发送短信之前需要检查应用是否有发送短信的权限。以下是检查权限的示例代码: if (ContextCompat.checkSelfPermission(thisActivity, Manifest....
3. **权限管理**: 发送和接收短信需要在AndroidManifest.xml中声明相应的权限,如`<uses-permission android:name="android.permission.SEND_SMS" />`和`<uses-permission android:name="android.permission.RECEIVE...
"android sms send"这一主题涵盖了如何在Android环境中发送短信,这通常涉及到编程接口(API)的使用,调试技巧以及不同设备间的兼容性问题。下面将详细介绍这个知识点。 首先,Android系统提供了一个名为`...
总结,"sms.zip_Android 数据库_android_android sms_sms"涵盖了Android平台下使用SQLite数据库管理和操作短信数据的相关技术,包括数据库操作、广播接收器、内容提供者、权限控制以及数据备份恢复等多个方面。...
这个【android-sms短信发送】项目旨在教你如何在虚拟环境中实现一个完整的短信发送流程。以下是对这一知识点的详细阐述: 1. **短信API使用**: Android系统提供了一个名为`SmsManager`的类,它是用于发送和接收...
在Android平台上,发送SMS(短消息服务)和监控接收到的SMS消息是常见的功能,尤其在开发涉及到消息通信的应用时。以下将详细讲解如何实现这两个功能,并提供相关的代码示例。 **一、发送SMS消息** 1. **权限申请*...
本篇将详细探讨Android短信开发的相关知识点,包括发送短信、接收短信、处理短信验证码以及相关的权限管理。 1. **发送短信**: - **使用SmsManager类**:在Android中,`SmsManager`是官方提供的用于发送短信的类...
在Android平台上,短信服务是移动应用开发中的一个重要组成部分,它允许用户发送和接收文本消息。在给定的“SMS.rar”压缩包中,我们聚焦于一个Android应用的源码,该应用专门实现了短信发送功能。这里我们将深入...
在Android操作系统中,SMS(Short Message Service)是用于发送和接收短信的核心功能。这个"SMS.rar"文件可能包含了关于如何在Android平台上处理SMS消息、管理联系人以及与SIM卡交互的相关代码示例或教程。接下来,...