android虚拟机接收短信的广播

首先:
在清单文件中添加权限:

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

由于是在接收手机短信的广播,所以我们还需要自己定义的一个接收器,我定义了一个接收器名叫GetSmsReceiver
接下来,需要给接收器在清单文件中注册一下:

<receiver android:name=".message.content.GetSmsReceiver">

   <intent-filter>

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

   </intent-filter>

</receiver>

那么,我就需要建立自己的接收器了。
首先建立一个类,取名叫GetSmsReceiver(自己随意取名),继承BroadcastReceiver这个类,这是广播接收者。代码如下:

public class GetSmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    }
}

建立好自己的接收器以后,这时当手机接收到一条短信时候,会发送一个系统广播,我们自己的接收器会接收到该广播,并且会自动执行onReceive()方法。因此接下来的代码将写在onReceive()方法里。在onReceive()方法里第二个参数intent,该参数里包含了接收的短信的所有信息。

public class GetSmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
     //获得短信数据。   intent.getExtras()是Bundle类型的,得到传入的消息
     Object[] pduses = (Object[]) intent.getExtras().get("pdus");
        for (Object pdus : pduses) {
            //每一条短信
            byte[] pdusmessage = (byte[]) pdus; 
            //获得短信管理器对象,利用它获得各种短信信息
            SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);
            //得到电话号码
            mobile = sms.getOriginatingAddress();
            //得到短信的内容
            content += sms.getMessageBody();
            //得到发送短信具体时间
            date = new Date(sms.getTimestampMillis());
        }
         Log.d(TAG, "电话号码 :"+mobile +"短信内容: " +content +"短信时间 : "+ date);
    }
}

结果:
(https://img-blog.csdn.net/20160722175819399)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值