[Android]通过广播读取短信

此实例实现功能为通过接收广播读取短信

实现很简单,但使用到了广播接受者,以免遗忘在此记录:

代码

  • AndriodMainfest文件

申明权限

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

配置广播

        <receiver android:name="activity.SMSBroadcastReceiver">
            <intent-filter android:priority="999">  
               <action android:name="android.provider.Telephony.SMS_RECEIVED" />  
           </intent-filter>
        </receiver>
  • BroadcastReceiver文件
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class SMSBroadcastReceiver extends BroadcastReceiver{
    //指定动作的名称
    public static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";  

    @Override  
    public void onReceive(Context context, Intent intent) {  
        if (ACTION.equals(intent.getAction())) {
            //根据接收到的意图对象获取短信
            SmsMessage[] msgs = getMessageFromIntent(intent);
            //提取短信内容  
            StringBuilder sBuilder = new StringBuilder();  
            if (msgs != null && msgs.length > 0 ) {  
                for (SmsMessage msg : msgs) {  
                    sBuilder.append("接收到了短信:\n发件人是:");  
                    sBuilder.append(msg.getDisplayOriginatingAddress());  
                    sBuilder.append("\n------短信内容-------\n");
                    sBuilder.append(msg.getDisplayMessageBody()); 
                }  
            }

            System.out.println(sBuilder.toString());  
        }       
    }  

    //从意图获取短信对象的具体方法
    public static SmsMessage[] getMessageFromIntent(Intent intent) {  
        SmsMessage retmeMessage[] = null;  
        Bundle bundle = intent.getExtras();  
        Object pdus[] = (Object[]) bundle.get("pdus");  
        retmeMessage = new SmsMessage[pdus.length];  
        for (int i = 0; i < pdus.length; i++) {  
            byte[] bytedata = (byte[]) pdus[i];  
            retmeMessage[i]  = SmsMessage.createFromPdu(bytedata);  
        }  
        return retmeMessage;  
    }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值