android虚拟机接收短信的广播

来源:互联网 发布:牛大哥辅助软件 编辑:程序博客网 时间:2024/06/05 20:56

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

<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);    }}

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

0 0
原创粉丝点击