短信验证并提取验证码
2013-11-27 16:18
218 查看
现在绝大多数应用都是用手机号码来注册,注册时会收到一条短信验证码来验证注册,一般要想提高客户口碑的体验度都会做一个短信监听,并提取到验证输入框中。网上也有人说如果装了类似360的短信拦截短信,可能就不那么灵了,这个好像之前我也试过,有时候好像也是,但这次我没再试过。我想就算有,为了那些没有装类似的软件的用户,也应该为他们做一步,让他们体验的更好,节省一点他们的时间也是应该的。懒得啰嗦了,有注释,直接看。我一向不那么勤快和不喜欢啰嗦。直接贴代码
在onCreate()方法中注册短信广播,在Activity类中销毁的方法中取消注册的广播
动态注册,我一般喜欢在动态中注册
receive = new SMSBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(2147483647); //权限设到最高
filter.addAction("android.provider.Telephony.SMS_RECEIVED");//短信的action
registerReceiver(receive, filter);
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(null != receive)
unregisterReceiver(receive);
super.onDestroy();
}
//短信拦截提取验证码
public class SMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"onReceive()");
if(!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
return;
Object[] pdus = (Object[])intent.getExtras().get("pdus");//获取短信内容
for(Object pdu : pdus){
byte[] data = (byte[]) pdu;//获取单条短信内容,短信内容以pdu格式存在
SmsMessage message = SmsMessage.createFromPdu(data);//使用pdu格式的短信数据生成短信对象
String sender = message.getOriginatingAddress();//获取短信的发送者
String content = message.getMessageBody();//获取短信的内容
Log.i(TAG,"onReceive(), sender = "+sender+" : content = "+content);
if(sender.startsWith("+8613")){//验证码短信发来的号码是这几个数字开头的
Log.i(TAG,"smsContent = "+content);
if(null != content && content.contains("本次注册[八方通]")){
String regNum = content.substring(content.indexOf(":")+1, content.indexOf(","));
Log.i(TAG,"regNum = "+regNum+"; index = "+content.indexOf(":")+1);
ed_registNum.setText(regNum);
}
//本次注册[八方通]验证码是:4058 ,本验证码[3分钟]内有效,感谢您使用.【云雀】
}
}
}
}
下面这个是在配置文件中的注册,静态注册(不运行应用程序也会监听)
这个类是在内部,所以会有“$”符号,有些情况可能还要在类的前面加上静态关键字
<receiver android:name=".activity.RegistActivity$SMSBroadcastReceiver" android:exported="false">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
在onCreate()方法中注册短信广播,在Activity类中销毁的方法中取消注册的广播
动态注册,我一般喜欢在动态中注册
receive = new SMSBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(2147483647); //权限设到最高
filter.addAction("android.provider.Telephony.SMS_RECEIVED");//短信的action
registerReceiver(receive, filter);
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(null != receive)
unregisterReceiver(receive);
super.onDestroy();
}
//短信拦截提取验证码
public class SMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"onReceive()");
if(!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
return;
Object[] pdus = (Object[])intent.getExtras().get("pdus");//获取短信内容
for(Object pdu : pdus){
byte[] data = (byte[]) pdu;//获取单条短信内容,短信内容以pdu格式存在
SmsMessage message = SmsMessage.createFromPdu(data);//使用pdu格式的短信数据生成短信对象
String sender = message.getOriginatingAddress();//获取短信的发送者
String content = message.getMessageBody();//获取短信的内容
Log.i(TAG,"onReceive(), sender = "+sender+" : content = "+content);
if(sender.startsWith("+8613")){//验证码短信发来的号码是这几个数字开头的
Log.i(TAG,"smsContent = "+content);
if(null != content && content.contains("本次注册[八方通]")){
String regNum = content.substring(content.indexOf(":")+1, content.indexOf(","));
Log.i(TAG,"regNum = "+regNum+"; index = "+content.indexOf(":")+1);
ed_registNum.setText(regNum);
}
//本次注册[八方通]验证码是:4058 ,本验证码[3分钟]内有效,感谢您使用.【云雀】
}
}
}
}
下面这个是在配置文件中的注册,静态注册(不运行应用程序也会监听)
这个类是在内部,所以会有“$”符号,有些情况可能还要在类的前面加上静态关键字
<receiver android:name=".activity.RegistActivity$SMSBroadcastReceiver" android:exported="false">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
相关文章推荐
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- js+servlet 实现发送短信验证码,并开始倒计时,进行验证
- 注册juery短信,验证码 验证
- AndroidStudio短信验证功能收不到验证码
- Android短信验证(手机号注册,绑定手机号获取验证码)实例
- 手机短信验证码注册-短信平台验证码开发6
- PHP实现对短信验证码发送次数的限制(防机刷验证码)
- Java生成六位验证码(发短信验证)
- 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能
- 从短信内容中提取验证码
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- android 验证码之短信验证(云之讯短信平台)
- 短信验证码要被淘汰?人工智能与验证码的博弈
- Android提取短信中的验证码
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用