首先:
在清单文件中添加权限:
<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);
}
}