- 浏览: 522620 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
c7887qin:
貌似还要使用相同的证书进行签名。。。
Android - 如何将两个/多个应用放到一个进程中去? -
北极光之吻:
天天向上1989 写道不是有OnDoubleTapListen ...
android实现双击事件监听 -
nielong123:
nielong123 写道onCheckedChanged(M ...
Android RadioGroup 换行, 支持多行多列 -
nielong123:
onCheckedChanged(MultiRadioGrou ...
Android RadioGroup 换行, 支持多行多列 -
zk_Ming:
zk_Ming 写道我用了你的,但是radiogroup 点击 ...
Android RadioGroup 换行, 支持多行多列
文章分类:Java编程
一、 android sms所要的权限
Java代码
1.<uses-permission android:name="android.permission.READ_SMS" />
2.<uses-permission android:name="android.permission.RECEIVE_SMS" />
二、 sms发送
与短消息发送相关的类为:SmsManager.
Java代码
1.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代码
1.PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
2.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代码
1.registerReceiver(sendReceiver);
2.registerReceiver(deliveredReceiver);
三、 sms接收
根据接收时广播的android.provider.Telephony.SMS_RECEIVED的Intent.我们可以扩展一个BroadcastReceiver来接收sms.
传递的Intent包含pdus数据。相关代码如下:
Java代码
1.Bundle bundle = intent.getExtras();
2. Object[] pdus = (Object[]) bundle.get("pdus");
3. SmsMessage[] msgs = new SmsMessage[pdus.length];
4. for (int i = 0; i < pdus.length; i++) {
5. msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
6.}
四、 采用ContentObserver监控短信数据库
上面方法三中并不能对sms进行更新和删除操作,要做这些操作需要用ContentObserver来监控短信数据库的变化来进行相关操作。
1. 短信数据库的ContentUri
Java代码
1.public final static String SMS_URI_ALL = "content://sms/"; //0
2.public final static String SMS_URI_INBOX = "content://sms/inbox";//1
3.public final static String SMS_URI_SEND = "content://sms/sent";//2
4.public final static String SMS_URI_DRAFT = "content://sms/draft";//3
5.public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
6.public final static String SMS_URI_FAILED = "content://sms/failed";//5
7.public final static String SMS_URI_QUEUED = "content://sms/queued";//6
2. sms主要结构:
Java代码
1._id => 短消息序号 如100
2.thread_id => 对话的序号 如100
3.address => 发件人地址,手机号.如+8613811810000
4.person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
5.date => 日期 long型。如1256539465022
6.protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
7.read => 是否阅读 0未读, 1已读
8.status => 状态 -1接收,0 complete, 64 pending, 128 failed
9.type => 类型 1是接收到的,2是已发出
10.body => 短消息内容
11.service_center => 短信服务中心号码编号。如+8613800755500
3. 步骤
a. 写一个类继承ContentObserver
Java代码
1.public class SMSDBObserver extends ContentObserver
public class SMSDBObserver extends ContentObserver
重写onChange方法(里面对INBOX, SEND两个URI进行处理)
Java代码
1.public void onChange(boolean selfChange)
2. Uri smsInBox = Uri.parse(SMS_URI_INBOX);
3. Cursor c = ctx.getContentResolver().query(uriSms, null, selection, selectionArgs, sortOrder);
4. //对字段进行操作。。。
5. //ctx.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
6. //ctx.getContentResolver().update(uri, values, where, selectionArgs);
7. //ctx.getContentResolver().delete(url, where, selectionArgs);
8. //ctx.getContentResolver().insert(url, values);
b. 在Activity中注册短信监控
Java代码
1. // 监控短信
2. smsObserver = new SMSDBObserver(new Handler(), this, app);
3.getContentResolver().registerContentObserver(Uri.parse(SMSDBObserver.SMS_URI_ALL), true, smsObserver);
注:
想监控已发送的,就要监控content://sms/send.
想删除时contentUri只能是content://sms/或content://sms/ conversations
呵呵,location获取的为空,经纬度获取为null,toString()的时候出问题,location获取为空的问题网上有好多,但是不太明白原理
报什么错??
一、 android sms所要的权限
Java代码
1.<uses-permission android:name="android.permission.READ_SMS" />
2.<uses-permission android:name="android.permission.RECEIVE_SMS" />
二、 sms发送
与短消息发送相关的类为:SmsManager.
Java代码
1.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代码
1.PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
2.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代码
1.registerReceiver(sendReceiver);
2.registerReceiver(deliveredReceiver);
三、 sms接收
根据接收时广播的android.provider.Telephony.SMS_RECEIVED的Intent.我们可以扩展一个BroadcastReceiver来接收sms.
传递的Intent包含pdus数据。相关代码如下:
Java代码
1.Bundle bundle = intent.getExtras();
2. Object[] pdus = (Object[]) bundle.get("pdus");
3. SmsMessage[] msgs = new SmsMessage[pdus.length];
4. for (int i = 0; i < pdus.length; i++) {
5. msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
6.}
四、 采用ContentObserver监控短信数据库
上面方法三中并不能对sms进行更新和删除操作,要做这些操作需要用ContentObserver来监控短信数据库的变化来进行相关操作。
1. 短信数据库的ContentUri
Java代码
1.public final static String SMS_URI_ALL = "content://sms/"; //0
2.public final static String SMS_URI_INBOX = "content://sms/inbox";//1
3.public final static String SMS_URI_SEND = "content://sms/sent";//2
4.public final static String SMS_URI_DRAFT = "content://sms/draft";//3
5.public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4
6.public final static String SMS_URI_FAILED = "content://sms/failed";//5
7.public final static String SMS_URI_QUEUED = "content://sms/queued";//6
2. sms主要结构:
Java代码
1._id => 短消息序号 如100
2.thread_id => 对话的序号 如100
3.address => 发件人地址,手机号.如+8613811810000
4.person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
5.date => 日期 long型。如1256539465022
6.protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
7.read => 是否阅读 0未读, 1已读
8.status => 状态 -1接收,0 complete, 64 pending, 128 failed
9.type => 类型 1是接收到的,2是已发出
10.body => 短消息内容
11.service_center => 短信服务中心号码编号。如+8613800755500
3. 步骤
a. 写一个类继承ContentObserver
Java代码
1.public class SMSDBObserver extends ContentObserver
public class SMSDBObserver extends ContentObserver
重写onChange方法(里面对INBOX, SEND两个URI进行处理)
Java代码
1.public void onChange(boolean selfChange)
2. Uri smsInBox = Uri.parse(SMS_URI_INBOX);
3. Cursor c = ctx.getContentResolver().query(uriSms, null, selection, selectionArgs, sortOrder);
4. //对字段进行操作。。。
5. //ctx.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
6. //ctx.getContentResolver().update(uri, values, where, selectionArgs);
7. //ctx.getContentResolver().delete(url, where, selectionArgs);
8. //ctx.getContentResolver().insert(url, values);
b. 在Activity中注册短信监控
Java代码
1. // 监控短信
2. smsObserver = new SMSDBObserver(new Handler(), this, app);
3.getContentResolver().registerContentObserver(Uri.parse(SMSDBObserver.SMS_URI_ALL), true, smsObserver);
注:
想监控已发送的,就要监控content://sms/send.
想删除时contentUri只能是content://sms/或content://sms/ conversations
评论
3 楼
busiying119
2011-05-30
![](/images/smiles/icon_redface.gif)
2 楼
JasonShieh
2011-05-26
busiying119 写道
我想问一下,我在短信监听的handler类里的handlemessage()方法里去发送短信为甚报错
String latitude = Double.toString(location.getLatitude());//经度 String longitude = Double.toString(location.getLongitude());//纬度 String altitude = Double.toString(location.getAltitude());//海拔 String result = "gps02"+latitude+":"+longitude; SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("13426294680", null, latitude+":"+longitude, null, null);
报什么错??
1 楼
busiying119
2011-05-24
我想问一下,我在短信监听的handler类里的handlemessage()方法里去发送短信为甚报错
String latitude = Double.toString(location.getLatitude());//经度 String longitude = Double.toString(location.getLongitude());//纬度 String altitude = Double.toString(location.getAltitude());//海拔 String result = "gps02"+latitude+":"+longitude; SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("13426294680", null, latitude+":"+longitude, null, null);
发表评论
-
Android 修改Android签名证书keystore的密码、别名alias以及别名的密码
2015-04-27 10:35 1163转载请注明出处:http://blog.csdn.net/ ... -
Android签名验证简介
2014-05-16 10:15 5355Android原生自带了个安装器(packages\apps ... -
adb server is out of date. killing...
2014-04-17 10:28 10021:今天调试android的时候发现一个诡异的问题 [htm ... -
Android关闭其他程序
2014-03-21 16:24 15571. restartPackage方法 这个方法在an ... -
正则表达式大全
2014-03-18 17:05 953正则表达式匹配网址: (https://[\w]*.|http ... -
正则表达式大全
2014-03-18 16:53 0正则表达式匹配网址: (https://[\w]*.|http ... -
jni jstring 、char* 类型的转换
2014-03-06 18:20 818jni jstring 、char* 类型的转换 //jst ... -
ListView GridView禁止点击效果
2014-01-12 01:36 5323listView里的item在点击的时候会变成黄色高亮显示,这 ... -
基于 Android NDK 的学习之旅-----资源释放
2014-01-11 14:37 1109转载于http://www.cnblogs.com ... -
Android RadioGroup 换行, 支持多行多列
2013-11-06 16:06 36812经过反复试验,发现无论你怎么摆弄RadioGroup, ... -
Android RadioGroup 换行, 支持多行多列
2013-11-06 16:05 0经过反复试验,发现无论你怎么摆弄RadioGroup, ... -
Android Gallery子元素无法横向填满屏幕的问题解决
2013-07-26 17:50 1429问题解决方法:你只需要把你的子元素的最外层布局用相对 ... -
Android系统手机端抓包方法
2013-06-25 11:42 986抓包准备 1. Android手机需要先获得root权限。 ... -
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{
2013-05-29 15:01 1260出现这个问题时,第一步看看manifest.xml是否配置正确 ... -
Android捕获异常
2013-04-03 14:52 1018如果有些异常是运行时异常,你无法捕获,但是又不想让程序 ... -
root卸载系统程序
2013-02-20 10:31 1684大家知道,卸载程序分为两种。一种是普通的应用程序,一种 ... -
java.lang.IllegalStateException: tried to write 1544 bytes with content-length
2013-01-31 14:57 1397上传文件时,content-length定义的长度小于 ... -
eclipse 开导入android 第三方jar包java heap space问题解决
2013-01-22 17:25 2501最近做android应用需要使用第三方的jar包,结果导入到e ... -
SurfaceView背景设置为透明
2013-01-17 18:41 3393将SurfaceView背景设置为透明,主要添加以下几句话就可 ... -
Android strings.xml中空格符的标识方法附xml特殊字符表示法
2013-01-10 16:03 3168在XML中空格符不是用HMTL中的 表示,而是用 表示。 附X ...
相关推荐
Android SMS 发送 接收及格式
基于android手机系统的 短信 sms 发送接收
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在...
Android 短信SMS发送代码流程 Android 短信SMS发送代码流程是 Android 操作系统中的一种重要功能,允许用户发送短信给其他用户。本文将详细介绍 Android 短信SMS发送代码流程的实现机制。 Messaging 应用层 在 ...
基于android的SMS短信的接受与发送
该主题的目的是通过创建一个用于管理联系人,发送和接收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' 的...
这个扩展名让你发送和recive从谷歌铬使用您的Android手机+ Set2SMS应用程序的短信 使用连接到您的网络的set2sms应用程序检测手机,并开始在浏览器上发送短信 支持语言:English
基于Android手机系统的java短信收发程序,本程序提供发送短信功能,并提醒短信接收。