加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.dakongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

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

发布时间:2022-10-06 15:31:21 所属栏目:应用 来源:
导读:  我们知道,只需通过代码就可以读到收件箱中的短信,发件箱中的短信;但是却没办法在短信发来的瞬间获取;如果我们在短信发来的一瞬间能得到相应的信息内容,那么我们就可以依次来展开很多应用了——

  我们知道,只需通过代码就可以读到收件箱中的短信,发件箱中的短信;但是却没办法在短信发来的瞬间获取;如果我们在短信发来的一瞬间能得到相应的信息内容,那么我们就可以依次来展开很多应用了——也就是通过短信去远程操作一部手机。
 
  如果想实时获取,就需要调用receiver了,写一个监听类,这样我们就可以实时获取短息信息了。
 
  预览图:
 
  还是来看看代码吧。
 
  首先,我们需要创建一个监听类SMSBroadcastReceiver,让他去继承BroadcastReceiver。
 
  再来初始化一个常量ACTION应用短信,并赋短信相关参数值。
 
  [java] android.provider.Telephony.SMS_RECEIVED
 
  android.provider.Telephony.SMS_RECEIVED
 
  接着创建onReceive方法。
 
  然后用getAction去监听手机短信相关动态,利用StringBuffer来保存短信信息。
 
  再然后主要代码了。
 
  [java] @Override
 
  public void onReceive(Context context, Intent intent) {
 
  if (intent.getAction().equals(ACTION)) {
 
  StringBuffer SMSAddress = new StringBuffer();
 
  StringBuffer SMSContent = new StringBuffer();
 
  Bundle bundle = intent.getExtras();
 
  if (bundle != null) {
 
  Object[] pdusObjects = (Object[]) bundle.get("pdus");
 
  SmsMessage[] messages = new SmsMessage[pdusObjects.length];
 
  for (int i = 0; i < pdusObjects.length; i++) {
 
  messages[i] = SmsMessage
 
  .createFromPdu((byte[]) pdusObjects[i]);
 
  }
 
  for (SmsMessage message : messages) {
 
  SMSAddress.append(message.getDisplayOriginatingAddress());
 
  SMSContent.append(message.getDisplayMessageBody());
 
  应用短信_默认短信应用 设置_设置默认短信应用
 
  }
 
  }
 
  }
 
  }
 
  @Override
 
  public void onReceive(Context context, Intent intent) {
 
  if (intent.getAction().equals(ACTION)) {
 
  StringBuffer SMSAddress = new StringBuffer();
 
  StringBuffer SMSContent = new StringBuffer();
 
  Bundle bundle = intent.getExtras();
 
  if (bundle != null) {
 
  Object[] pdusObjects = (Object[]) bundle.get("pdus");
 
  SmsMessage[] messages = new SmsMessage[pdusObjects.length];
 
  for (int i = 0; i < pdusObjects.length; i++) {
 
  messages[i] = SmsMessage
 
  .createFromPdu((byte[]) pdusObjects[i]);
 
  }
 
  for (SmsMessage message : messages) {
 
  SMSAddress.append(message.getDisplayOriginatingAddress());
 
  SMSContent.append(message.getDisplayMessageBody());
 
  }
 
  }
 
  }
 
  }
 
  代码中的SMSAddress为发送短信的号码,SMSContent为短信内容。
 
  要想看到是否成功获取,最简单的方法就是把这两个参数打印出来。
 
  [html] System.out.println("发送号码:" + SMSAddress + "\n" + "短信内容:"
 
  + SMSContent);
 
  System.out.println("发送号码:" + SMSAddress + "\n" + "短信内容:"
 
  + SMSContent);
 
  不过要把他们加入for循环中,因为当新信息发来时,SMSAddress和SMSContent将被替换。
 
  因此如果要是做应用时,也是在for循环中判断的。
 
  最后要记得在Manifest.xml中注册监听器。
 
  [java]
 
  同时要加上权限。
 
  [html]
 
  这样,我们运行程序后,只要有短信接收,SMSAddress和SMSContent就会被赋值。
 
  这里顺便补充一个知识点,关于Eclipse程序的。
 
  相信很多初学者不知道,Eclipse自带一个发短信插件,可以实现给虚拟机发送短信。这样,我们在做短信应用的时候,就不用同时启动多台虚拟机了……
 
  如何操作呢?方法如下。
 
  1.点击菜单栏中的 Window 窗口。
 
  2.找到哦啊其中的 Show View 目录。
 
  3. 选择 Other...。
 
  默认短信应用 设置_应用短信_设置默认短信应用
 
  然后我们发现会弹出一个窗口。
 
  默认短信应用 设置_设置默认短信应用_应用短信
 
  4,为了便于操作,我们在弹出的窗口的搜索栏中,直接输入 Emulator Control。
 
  设置默认短信应用_应用短信_默认短信应用 设置
 
  5.点击列表中的 Emulator Control,再点OK;或者直接双击。
 
  这样就出现了一个窗口,其中有很多参数。
 
  其他的以后有机会再做介绍,我们这次至用到其中4个。
 
  设置默认短信应用_应用短信_默认短信应用 设置
 
  如图所示,我们只需要输入对应的参数,选择需要的类型,最后点发送就可以了。
 
  PS:有的人奇怪为什么灰色,没法输入,没法选择,那是因为你没有选中模拟器。这个插件只能同时给一个模拟器发送消息。关于模拟器的选择,和调用Emulator Control的方法差不多,区别只是在输入Emulator Control的时候输入 Devices 就可以了。你当前选中哪个模拟器了,就会给哪个模拟器发送消息,不需要输入模拟器号码。
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!