- 浏览: 223484 次
- 性别:
- 来自: 北京
最新评论
-
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 2602Android除了提供/res目录存放资源文件外,在/asse ... -
AndroidManifest.xml文件综合详解
2010-08-18 09:59 1008一,重要性AndroidManifest. ... -
总结Content Provider的使用
2010-08-18 09:47 1649Android中的Content provider机制可支持在 ... -
Android动态创建一个个组件
2010-08-12 00:11 2895Android 界面编程有两种基本的方法,一种是在代码中,动态 ... -
LinearLayout+EditText+Button+AlertDialog简单应用
2010-08-11 22:08 2209这个简单的例子是EditText中默认有个字符串text,单击 ... -
android实现底部菜单栏
2010-08-11 20:43 1665android程序,许多时候需要菜单栏显示在底部或顶部,但是没 ... -
Android permission 访问权限大全
2010-08-11 20:41 978androidmanifest.xml中声明相关权限请求, 完 ... -
Android的几种布局方式
2010-08-11 20:27 4891通常我们开发的应用程序都是需要具有友好的用户界面,那么Andr ... -
Android的系统架构
2010-08-11 20:10 1521Android的系统架构是怎么样的呢?从下图我们可以从整体上有 ... -
Android响应按钮的程序结构
2010-08-11 20:07 1889图形界面的按钮是最普通的控件,Android响应按钮的程序结构 ... -
AudioRecord和AudioTrack类的使用
2010-08-11 20:06 14812AudioRecord和AudioTrack类 ... -
Android资源文件
2010-08-10 10:34 1315资源是您在代码中使用 ... -
SMS Messaging in Android(接1)
2010-08-09 00:12 1049就是它了!测试应用程序,按下F11。为每个Android模拟器 ... -
SMS Messaging in Android(1)
2010-08-08 23:54 1702可以安全的说,在过去的近20年里卖的每一款移动电话都拥有SMS ... -
Android Button按钮控件美化方法
2010-08-08 21:11 2748对于Android自带的Button按钮控件很多网友感觉不是很 ... -
Android布局之AbsoluteLayout
2010-08-08 18:34 1782AbsoluteLayout也就是绝对布局,又称坐标布局,在布 ... -
Android移植: wifi设计原理(源码分析)
2010-08-08 02:22 2291初始化在 SystemServer 启动的时候,会生成一个 ... -
Android禁用键盘的所有按键
2010-08-07 23:52 4136KeyguardManager keyguardManager ...
相关推荐
Android SMS 发送 接收及格式
基于android手机系统的 短信 sms 发送接收
基于android的SMS短信的接受与发送
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在...
该主题的目的是通过创建一个用于管理联系人,发送和接收SMS的应用程序,使学生熟悉Android系统。 主题 介绍 对于此项目,您将需要创建一个Android应用程序,该应用程序允许您创建联系人并通过SMS与之聊天。 这里的...
android代码,实训SMS短信的发送、接收等
小短信门Tiny SMS Gate 是一个适用于 Android 的小型(GPL 2 许可)SMS 网关。 它允许您通过手机通过常规的 HTTP 发送和接收 SMS 消息。 而已。 因此,我不得不请求您,请不要在受信任的 LAN 之外使用它。 虽然有一...
android短信操作,实现发送,接收与拦截
1、定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.provider.Telephony.SMS_RECEIVED 的广播,这条广播里携带着与短信相关的所有数据。 // 接收短信的广播 class ...
android permission BROADCAST SMS"> <intent filter android:priority "2147483647"> <action android:name "android provider Telephony SMS RECEIVED" > < intent...
Android 短信接收和短信发送(可以屏蔽系统短信通知)
如果要测试基于SMS的应用程序或需要任何应用程序发送和接收文本SMS / HTTPtoSMS或SMStoHTTP的内容,则可以使用此代码快速测试业务逻辑,而不必担心真正的SMS网关。 此代码将您的android手机转换为SMS网关。 这个...
简单-短信-发送者-接收者 用于发送和接收短信的简单安卓应用 这是一个基本的 android 应用程序,它允许您向(当前硬编码的)电话号码发送 SMS 消息,并且接收到的消息显示在 textView 中。
粒子群优化 Android应用程序发送和接收短信
手机短信sms接收发送 七大模块 sms android 短信管理
本文介绍了Android短信的发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下: 以下就是 Android清单的XML AndroidManifest.xml <manifest xmlns:...
通过 SMS 收到关键字“位置”后,接收者的位置将发送给 SMS 的发送者。 例如:假设有 A、B、C、D 是家人,A 已经安装了此应用程序并允许 B 和 C 访问他/她的位置。 因此,每当 B 或 C 发送包含关键字 'Location' 的...
9.1.6 发送和接收数据信息 289 9.2 SMS简介 291 9.2.1 在应用程序中使用SMS 291 9.2.2 发送SMS信息 291 9.2.3 监听SMS消息 294 9.2.4 紧急响应的SMS示例 296 9.2.5 紧急响应自动化 306 9.3 小结 314 第10章 ...
这个扩展名让你发送和recive从谷歌铬使用您的Android手机+ Set2SMS应用程序的短信 使用连接到您的网络的set2sms应用程序检测手机,并开始在浏览器上发送短信 支持语言:English
基于Android手机系统的java短信收发程序,本程序提供发送短信功能,并提醒短信接收。