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

本文介绍了在Android手机上监听短信的两种方法。一种是通过接收系统的短信广播进行操作,适合简单应用,但会显示通知信息。另一种是利用观察者模式监听短信数据库,可实现短信拦截且不显示通知,但可能被滥用。文章提供了相关的AndroidManifest.xml配置示例。
摘要由CSDN通过智能技术生成

转载于:http://blog.csdn.net/JavaTiger427/archive/2010/10/11/5932751.aspx

 

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 < 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值