`
wangtingshuai
  • 浏览: 3039 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android 短信监听

阅读更多

Android 手机上监听短信有两种方式:

 

1、 接受系统的短信广播,操作短信内容。

 

优点:操作方便,适合简单的短信应用。

缺点:来信会在状态栏显示通知信息。

 

AndroidManifest.xml 

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

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

 

<!-- Receiver -->

< receiver android:name = ".sms.SMSReceiver" >

< intent-filter >

    < action android:name = "android.provider.Telephony.SMS_RECEIVED" />

</ intent-filter >

</ receiver >

 

code 

package org.anymobile.demo.sms;

 

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.telephony.gsm.SmsMessage;

import android.util.Log;

 

public class SMSReceiver extends BroadcastReceiver

{

    public static final String TAG = "ImiChatSMSReceiver" ;

    //android.provider.Telephony.Sms.Intents

    public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED" ;

   

    @Override

    public void onReceive(Context context, Intent intent)

    {

       if (intent.getAction().equals( SMS_RECEIVED_ACTION ))

       {

           SmsMessage[] messages = getMessagesFromIntent(intent);

           for (SmsMessage message : messages)

           {

              Log.i ( TAG , message.getOriginatingAddress() + " : " +

                  message.getDisplayOriginatingAddress() + " : " +

                  message.getDisplayMessageBody() + " : " +

                  message.getTimestampMillis());

           }

       }

    }

   

    public final SmsMessage[] getMessagesFromIntent(Intent intent)

    {

        Object[] messages = (Object[]) intent.getSerializableExtra( "pdus" );

        byte [][] pduObjs = new byte [messages. length ][];

 

        for ( int i = 0; i < messages. length ; i++)

        {

            pduObjs[i] = ( byte []) messages[i];

        }

        byte [][] pdus = new byte [pduObjs. length ][];

        int pduCount = pdus. length ;

        SmsMessage[] msgs = new SmsMessage[pduCount];

        for ( int i = 0; i < pduCount; i++)

        {

            pdus[i] = pduObjs[i];

            msgs[i] = SmsMessage.createFromPdu (pdus[i]);

        }

        return msgs;

    }

 

}

 

2、 应用观察者模式,监听短信数据库,操作短信内容。

 

优点:可以拦截来信在状态栏的显示通知,适合作短信拦截。

缺点:可以发展成 MU ,在后台悄悄的收 / 发短信。

 

实例如下:

SystemEventReceiver :收到开机启动 OK 的广播后,启动 BootService 服务;收到应用发送短信的 INTENT 后,调用系统接口发送短信

BootService :开启服务后,打开短信监听器

SMSObserver :数据观察者,监听短信数据库

SMSHandler :短信处理器

 

AndroidManifest.xml 

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

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

<!-- Service -->

< service android:name = ".BootService"

        android:label = "@string/app_name" >

    < intent-filter >

                < action android:name = "org.anymobile.test.service.IMICHAT" />

    < category android:name = "android.intent.category.DEFAULT" />

</ intent-filter >

</ service >

<!-- Receiver -->

< receiver android:name = ".SystemEventReceiver" >

< intent-filter >

    < action android:name = "android.intent.action.BOOT_COMPLETED" />

</ intent-filter >

</ receiver >

 

code 

package org.anymobile.demo.sms;

 

import android.content.ContentUris;

import android.content.Context;

import android.content.Intent;

import android.net.Uri;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

 

public class SMSHandler extends Handler

{

    public static final String TAG = "SMSHandler" ;

 

    private Context mContext ;

   

    public SMSHandler(Context context)

    {

       super ();

       this . mContextApple-conv

分享到:
评论

相关推荐

    Android 实现发短信 监听短信发送状态

    在Android平台上,开发人员可以利用系统的短信服务API来实现发送短信以及监听短信发送的状态。这一功能对于构建一些需要确认信息传递的应用,如验证码发送、通知提醒等,是至关重要的。以下将详细介绍如何在Android...

    android 短信 发送 监听 拦截等自己写的demo

    在Android平台上,短信功能是...通过这个项目,你可以更好地理解和实践Android短信相关的开发工作,包括但不限于短信的发送、接收和处理流程。这不仅有助于提高你的编程技能,也有助于在实际项目中构建更丰富的功能。

    Android 电话及短信的监听程序源码.rar

    对于短信监听,需要设置`&lt;action android:name="android.provider.Telephony.SMS_RECEIVED" /&gt;`。 6. **数据持久化**: 电话和短信的信息可能需要保存在数据库或文件中,因此开发者需要熟悉SQLite数据库的操作或者...

    详解Android短信的发送和广播接收实现短信的监听

    本文将从以下几点深入解析Android短信发送与接收广播实现的细节: 1. Android清单文件(AndroidManifest.xml)中的权限配置 在开发短信发送和接收功能时,必须在Android清单文件中声明相应的权限。由于涉及到短信...

    Android 实现短信接收监听--(短信动态权限添加)

    以上就是Android 6.0及以上版本中实现短信监听的关键步骤。需要注意的是,Android 10(API级别29)之后,如果你的应用不在前台运行,系统可能会阻止你的应用接收到短信广播,除非在Manifest中设置了`android:...

    android 监听短信数据库

    在Android开发中,监听短信数据库的变化是一项常见的需求,尤其是在实现如短信自动回复、短信通知等功能时。通过监听短信数据库,开发者可以实时获取到用户手机上接收到的新短信或已有的短信变化,从而进行相应的...

    android NotificationListenerService监听通知栏(qq 微信 短信)

    android NotificationListenerService 监听通知栏,android NotificationListenerService 监听通知栏 android NotificationListenerService 监听通知栏

    Android中监听短信的两种方法

    在Android系统中,监听短信通常有两种方法:通过注册BroadcastReceiver监听SMS_RECEIVED_ACTION广播和使用ContentObserver监控短信数据库。...根据实际需求和系统环境,开发者可以选择合适的方式进行短信监听。

    Android 电话及短信的监听程序源码.zip

    在Android平台上,电话和短信的监听是通过特定...通过仔细研究这个源码,你将更好地理解Android电话和短信监听的工作原理,同时也能学习到如何在实际项目中应用这些功能。这将有助于提升你在Android应用开发中的技能。

    Android上监听收到的短信(SMS)

    在Android平台上,监听收到的短信是一项常见的功能,例如在开发安全应用或自动化工具时。本文将详细介绍两种主要方法:通过广播监听短信消息和通过短信数据库获取短信内容。 **方式一:通过广播监听短信消息** 在...

    Android短信验证码监听解决onChange多次调用的方法

    总结来说,监听Android短信验证码需要创建ContentObserver,注意onChange的多次调用,并处理权限问题。同时,验证码的提取依赖于准确地解析短信内容,这可能需要根据实际业务需求调整。在面对不同Android系统版本和...

    Android电话及短信的监听程序源码.zip

    在Android平台上,开发电话和短信监听程序涉及到一系列的API接口和权限管理。下面将详细讲解这一领域的关键知识点。 首先,监听电话状态需要使用到`TelephonyManager`类,它是Android提供的一个系统服务,用于获取...

    android广播监听短信并显示内容.doc

    Android 广播监听短信并显示内容 Android 广播监听短信并显示内容是指在 Android 应用程序中,使用广播监听来监控和处理短信,获取短信内容并将其显示出来。本文将详细介绍如何使用 Android 广播监听来监听短信,并...

    SMSListener.rar_SMSListener_android_android SMSListener_android

    总的来说,这个压缩包提供的示例可能包含了创建、注册、使用和停止短信监听器的全过程,对于理解Android短信监听机制及其应用具有一定的参考价值。开发者应当注意合法、合规地使用这些功能,尊重并保护用户的隐私权...

    smsListener.rar_android

    总结起来,“smsListener”项目是一个Android短信监听的实例,它涵盖了Android权限管理、BroadcastReceiver的使用、短信消息的解析和处理等关键知识点。通过学习和实践这个示例,开发者可以掌握在Android应用中实现...

    Android系统源码短信收发流程分析

    "Android短信收发流程分析" Android 短信收发流程是 Android 系统源码中一个非常重要的模块,它负责处理短信的发送和接收过程。在这个流程中,涉及到多个组件和类别,包括 ComposeMessageActivity、WorkingMessage...

    SMSListener.zip_SMSListener_spam sms_短信

    综上所述,"SMSListener.zip" 文件可能包含了一个完整的Android短信监听应用的源代码,其核心功能是接收短信并能识别并屏蔽垃圾短信。通过深入研究这些源码,开发者可以学习到如何在Android平台上实现类似功能,以及...

    android客户端请求,服务端监听apk安装完成,通知客户端

    这是一个关键组件,用于监听系统或应用发送的广播事件,比如安装应用、接收到短信等。在我们的场景中,我们需要创建一个BroadcastReceiver来监听APK安装完成的广播。Android系统在安装完新的APK后会发送ACTION_...

    Android SMSNotify Android 短信通知源码

    【Android SMSNotify】是一款专为Android...通过对`SMSNotify`源码的学习和理解,开发者不仅可以掌握Android短信通知的实现方式,还能深入了解Android系统的组件交互、权限管理、数据存储以及性能优化等多方面知识。

Global site tag (gtag.js) - Google Analytics