第一次写博客,就写关于Android4.0以上的短信接收吧。因为现在做的项目用到,所以写出来记录下。以免以前忘记
/**
* 短信接收广播
* @author Administrator
*
*/
public class SmsReceive extends BroadcastReceiver {
EditText metInput;
/**因为我做的是需要自动输入短信验证码,所以需要传入个EditText*/
public SmsReceive(EditText metInput) {
super();
this.metInput = metInput;
}
@Override
public void onReceive(Context arg0, Intent intent) {
Bundle _bundle = intent.getExtras();
if(_bundle != null){
Object[] _pdus = (Object[])_bundle.get("pdus");
for(Object x:_pdus){
SmsMessage _smsMessage = SmsMessage.createFromPdu((byte[])x);
String _boyd = _smsMessage.getDisplayMessageBody();//从这里,可以得到短信内容
}
}
}
}
这样就写好一个广播了。写好广播了,然后还需要进行添加一个过滤器IntentFilter
mSmsReceive = new SmsReceive(metInputYZM);
IntentFilter _intFilter = new IntentFilter();
_intFilter.setPriority(1000); //这个是设置广播的优先级的。从0-1000,1000是为最大的。但是在有些操作系统上,是收不到短信广播的,比如小米。。。。。所以不能收到短信,不要灰心,有可能是操作系统问题
_intFilter.addAction("android.provider.Telephony.SMS_RECEIVED"); //这个是确定接收广播类型为短信接收广播
registerReceiver(mSmsReceive, _intFilter); //然后不要忘记在Context中注册好广播,如果不需要常驻,那么记得注销掉广播
/*
if(mSmsReceive != null)
unregisterReceiver(mSmsReceive);*/
还有,别忘记在AndroidManiifes添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS" />
当然,如果你想常驻型的广播,那么久需要在AndroidManiifes中注册了。
经过本人确定,实验,是可以获取到短信的