说实话,关于Android中对短信的一些相关操作是一个比较入门的东西。那我现在还要来写这一篇博客的原因只是因为现在开发中有相关内容,而又想将这些东西分享给更多的人来学习,同时在以后对Android系统的短信进行其他学习的时候也就放在这里做一个记录了,于是就写了这篇啰嗦的文章。如果你觉得这是一个不错的东西,欢迎收藏,以便在以后更方便地查看本人在此篇文章中更新的内容。下面我就从标题中的三个方面来对Android系统中的短信操作进行一个简单地学习。
短信的发送
由于Android中对短信发送方法的优良封装,之后对发送短信的开发就显得异常的简单了。
public static void sendMessage(Context context, String content, String phoneNumber) { SmsManager sms = SmsManager.getDefault(); PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(), 0); sms.sendTextMessage(phoneNumber, null, content, pi, null); }
别忘了还有权限问题:
<uses-permission android:name="android.permission.SEND_SMS" />
短信的接收
对于短信息的接收相对来说会复杂一些。而复杂的原因大家也应该比较容易理解——接收是不可控制的。也就是说我们的手机根本不知道什么时候会有一条短信息过来。由于过于被动,Android的机制中就出现了一个强大到让你佩服的东西,那就是广播接收者。我们注册一个广播接收者,然后让这个广播接收者时时刻刻地去监听短信息是否到达的这一事件。就这样,被动触发事件完美地解决了。下面让我们来看看这个过程:
public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { Bundle bundle = intent.getExtras(); Object messages[] = (Object[]) bundle.get("pdus"); SmsMessage smsMessage[] = new SmsMessage[messages.length]; for (int n = 0; n < messages.length; n++) { smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); } showToast(context, "短信内容: " + smsMessage[0].getMessageBody()); } }
添加权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" />
以及在manifest中进行一个静态注册:
<receiver android:name=".broadcast.SMSReceiver" > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
短信的拦截
在能够接收短信的基础上做一个短信拦截倒是简单了许多。因为能够接收,所以我只要成为第一个接收的人,并把接收到的短信不再向下传播,这就完成了短信息的拦截了。
提高优先权:
阻断传播:
短信的删除
以下是短信相关的协议
content://sms/inbox 收件箱
content://sms/sent 已发送
content://sms/draft 草稿
content://sms/outbox 发件箱
content://sms/failed 发送失败
content://sms/queued 待发送列表
就拿收件箱为例实现短信的删除代码如下:
实现删除短信中包含某一字段的短信:
public void deleteSMS(String smscontent) { ContentResolver CR = getContentResolver(); try { // 准备系统短信收信箱的uri地址 Uri uri = Uri.parse("content://sms/inbox"); // 查询收信箱里所有的短信 Cursor cursor = CR.query(uri, new String[] { "_id", "address", "person", "body", "date", "type" }, null, null, null); int count = cursor.getCount(); if (count > 0) { while (cursor.moveToNext()) { String body = cursor.getString(cursor.getColumnIndex("body"));// 获取信息内容 if (body.contains(smscontent)) { int id = cursor.getInt(cursor.getColumnIndex("_id")); CR.delete(Uri.parse("content://sms"), "_id=" + id, null); } } } } catch (Exception e) { Log.v("e", e.getMessage()); } }
根据最新的短信实现删除信息(删除的对象是联系人而非短信)
public void deleteSMS() { ContentResolver CR = getContentResolver(); // 查询收信箱里所有的短信 Cursor cursor = CR.query(Uri.parse("content://sms/inbox"), new String[] { "_id", "thread_id" }, null, null, null); if (cursor != null) { cursor.moveToFirst(); int a = cursor.getCount(); int b = cursor.getColumnCount(); long threadId = cursor.getLong(1); CR.delete(Uri.parse("content://sms/conversations/" + threadId), null, null); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍详解Android短信的发送和广播接收实现短信的监听,包括了详解Android短信的发送和广播接收实现短信的监听的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Android短信的发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下: 以下就是 Android清单的XML AndroidManifest.xml 发送短息
本文向大家介绍Android接收和发送短信处理,包括了Android接收和发送短信处理的使用技巧和注意事项,需要的朋友参考一下 关于短信接收处理方面,当前已经有一些app做的比较好了,比如发给手机发验证码验证的问题,很多app在手机接收到验证码后,不需要输入,就直接可以跳过验证界面,这就是用到了对接收到的短信的处理。至于短信的发送,也没什么好说的了。在此也只是附上一个小实例。 效果图: MainA
我希望我的Java应用程序在不使用任何额外硬件设备的情况下发送和接收短信,而且它必须是免费的。 我进行了搜索,但我只找到了标题,我找到了一些类似SMSLib的东西,但另一方面,我没有找到学习这些的教程或书籍。 我还发现了SMSLib代码,但不明白: 发送消息/短信代码 阅读信息/短信代码
我已经想好了如何发送和接收短信。要发送SMS消息,我必须调用类的和方法。要接收SMS消息,我必须在文件中注册一个接收方。然后我必须重写的方法。我在下面列出了一些例子。 mainactivity.java AndroidManifest.xml 然而,我想知道你是否可以发送和接收彩信以类似的方式。在做了一些研究之后,博客上提供的许多示例只是将传递给本机消息传递应用程序。我正在尝试发送一个彩信而不离开
本文向大家介绍Android创建简单发送和接收短信应用,包括了Android创建简单发送和接收短信应用的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下 一、接收短信 项目的结构如下:一个简单的接收和发送短信的功能 1、定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.pro
我正在尝试设置一个类来接收短信和发送状态。以下是我的清单如何查找此任务: 我收到了收到的消息,但没有收到发送的消息,我的清单声明有问题吗?