Android短信应用——短信信息实时获取

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2020年10月7日21:18:30 评论 14 views 1996字阅读6分39秒

我们知道,只需通过代码就可以读到收件箱中的短信,发件箱中的短信;但是却没办法在短信发来的瞬间获取;如果我们在短信发来的一瞬间能得到相应的信息内容,那么我们就可以依次来展开很多应用了——也就是通过短信去远程操作一部手机。

如果想实时获取,就需要调用receiver了,写一个监听类,这样我们就可以实时获取短息信息了。

还是来看看代码吧。

首先,我们需要创建一个监听类SMSBroadcastReceiver,让他去继承BroadcastReceiver。

再来初始化一个常量ACTION,并赋短信相关参数值。

  1. Android.provider.Telephony.SMS_RECEIVED  

接着创建onReceive方法。

然后用getAction去监听手机短信相关动态,利用StringBuffer来保存短信信息。

再然后主要代码了。

  1. @Override  
  2.     public void onReceive(Context context, Intent intent) {  
  3.         if (intent.getAction().equals(ACTION)) {  
  4.             StringBuffer SMSAddress = new StringBuffer();  
  5.             StringBuffer SMSContent = new StringBuffer();  
  6.             Bundle bundle = intent.getExtras();  
  7.             if (bundle != null) {  
  8.                 Object[] pdusObjects = (Object[]) bundle.get("pdus");  
  9.                 SmsMessage[] messages = new SmsMessage[pdusObjects.length];  
  10.                 for (int i = 0; i < pdusObjects.length; i++) {  
  11.                     messages[i] = SmsMessage  
  12.                             .createFromPdu((byte[]) pdusObjects[i]);  
  13.                 }  
  14.                 for (SmsMessage message : messages) {  
  15.                     SMSAddress.append(message.getDisplayOriginatingAddress());  
  16.                     SMSContent.append(message.getDisplayMessageBody());  
  17.                 }  
  18.             }  
  19.         }  
  20.     }  

代码中的SMSAddress为发送短信的号码,SMSContent为短信内容。

要想看到是否成功获取,最简单的方法就是把这两个参数打印出来。

  1. System.out.println("发送号码:" + SMSAddress + "\n" + "短信内容:"  
  2.                             + SMSContent);  

不过要把他们加入for循环中,因为当新信息发来时,SMSAddress和SMSContent将被替换。

因此如果要是做应用时,也是在for循环中判断的。

最后要记得在Manifest.xml中注册监听器。

  1. <receiver android:name="cn.etzmico.SMSBroadcastReceiver">  
  2.         <intent-filter>  
  3.             <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>  
  4.         </intent-filter>  
  5.     </receiver>  

同时要加上权限。

  1. <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>  

这样,我们运行程序后,只要有短信接收,SMSAddress和SMSContent就会被赋值。

(System.out后就另当别论了!)

Android短信应用——短信信息实时获取工程源码下载地址:

免费下载地址在 http://linux.linuxidc.com/

继续阅读
LRU缓存设计 Linux编程

LRU缓存设计

缓存的数据结构采用哈希表,key到value的映射。 网上有些资料采用记录数据的使用时刻 实现LRU策略,此处采用双向链表 实现LRU策略。LRU Least Recently Used,MRUMos...
R 语言 简单介绍 Linux编程

R 语言 简单介绍

一.统计分析软件说明  统计分析软件有:SPSS, SAS、R语言,Matlab,S-PLUS,S-Miner。 SPSS: 最简单的,都是菜单操作,不过不利于二次程序开发。 SAS: 需要...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: