Android实现获取短信验证码的功能以及自定义GUI短信验证详解.docx
《Android实现获取短信验证码的功能以及自定义GUI短信验证详解.docx》由会员分享,可在线阅读,更多相关《Android实现获取短信验证码的功能以及自定义GUI短信验证详解.docx(13页珍藏版)》请在冰豆网上搜索。
Android实现获取短信验证码的功能以及自定义实现获取短信验证码的功能以及自定义GUI短短信验证详解信验证详解Android实现获取短信验证码的功能以及自定义GUI短信验证1、获取SDK请到官网下载最新版本的SDK,下载回来后解压,你会发现有好几个文件,其中“SMSSDK”目录存放的是短信SDK的全部内容,“SMSSDKSample”中保存了短信SDK的演示项目代码,而“SMSSDKSample.apk”则是“SMSSDKSample”的可执行程序。
app是这个Project的一个module。
如要在这个module里面使用带界面的SMSSDK。
就将MobCommons.jar,MobTools.jar,SMSSDK-2.0.2.aar,SMSSDKGUI-2.0.2.aar放到了app的libs目录下。
然后在app目录下的build.gradle,加上红圈中的这几句就行了。
注意版本号要一致。
我这里用的是htmlviewplaincopy在CODE上查看代码片派生到我的代码片repositoriesflatDirdirslibs/就是你放aar的目录地址dependenciescompilefileTree(include:
*.jar,dir:
libs)testCompilejunit:
junit:
4.12compilecom.android.support:
appcompat-v7:
21.0.3compilename:
SMSSDK-2.0.2,ext:
aarcompilename:
SMSSDKGUI-2.0.2,ext:
aar2、配置AndroidManifest.xml打开您项目的“AndroidManifest.xml”,在其中添加如下的权限:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片如果使用自带的GUI,需要再“application”下添加如下activity:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片3、添加代码启动SDK在您的项目启动时,调用下面的代码:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片SMSSDK.initSDK(this,您的appkey,您的appsecret);发送短信验证码短信SDK内置了开源的GUI功能,您可以通过调用下面的代码打开短信验证页面:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片/打开注册页面RegisterPageregisterPage=newRegisterPage();registerPage.setRegisterCallback(newEventHandler()publicvoidafterEvent(intevent,intresult,Objectdata)/解析注册结果if(result=SMSSDK.RESULT_COMPLETE)SuppressWarnings(unchecked)HashMapphoneMap=(HashMap)data;Stringcountry=(String)phoneMap.get(country);Stringphone=(String)phoneMap.get(phone);/提交用户信息registerUser(country,phone););registerPage.show(context);htmlviewplaincopy在CODE上查看代码片派生到我的代码片/提交用户信息privatevoidregisterUser(Stringcountry,Stringphone)Randomrnd=newRandom();intid=Math.abs(rnd.nextInt();Stringuid=String.valueOf(id);StringnickName=SmsSDK_User_+uid;Stringavatar=AVATARSid%12;SMSSDK.submitUserInfo(uid,nickName,avatar,country,phone);其中的AVATARS就是一个字符串数组,里面是头像的网络链接而已,这些在下载的SDKDEMO中可查看。
4、下面看看如何自定义GUI短信验证而不是调用系统的设计我们的布局文件:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片一个主Activity代码如下:
htmlviewplaincopy在CODE上查看代码片派生到我的代码片publicclassMainActivityextendsActivityimplementsOnClickListenerprivateEditTextphone;privateEditTextcord;privateTextViewnow;privateButtongetCord;privateButtonsaveCord;privateStringiPhone;privateStringiCord;privateinttime=60;privatebooleanflag=true;OverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);init();SMSSDK.initSDK(this,);EventHandlereh=newEventHandler()OverridepublicvoidafterEvent(intevent,intresult,Objectdata)Messagemsg=newMessage();msg.arg1=event;msg.arg2=result;msg.obj=data;handler.sendMessage(msg);SMSSDK.registerEventHandler(eh);privatevoidinit()phone=(EditText)findViewById(R.id.phone);cord=(EditText)findViewById(R.id.cord);now=(TextView)findViewById(R.id.now);getCord=(Button)findViewById(R.id.getcord);saveCord=(Button)findViewById(R.id.savecord);getCord.setOnClickListener(this);saveCord.setOnClickListener(this);OverridepublicvoidonClick(Viewv)switch(v.getId()caseR.id.getcord:
if(!
TextUtils.isEmpty(phone.getText().toString().trim()if(phone.getText().toString().trim().length()=11)iPhone=phone.getText().toString().trim();SMSSDK.getVerificationCode(86,iPhone);cord.requestFocus();getCord.setVisibility(View.GONE);elseToast.makeText(MainActivity.this,请输入完整电话号码,Toast.LENGTH_LONG)how();phone.requestFocus();elseToast.makeText(MainActivity.this,请输入您的电话号码,Toast.LENGTH_LONG).show();phone.requestFocus();break;caseR.id.savecord:
if(!
TextUtils.isEmpty(cord.getText().toString().trim()if(cord.getText().toString().trim().length()=4)iCord=cord.getText().toString().trim();SMSSDK.submitVerificationCode(86,iPhone,iCord);flag=false;elseToast.makeText(MainActivity.this,请输入完整验证码,Toast.LENGTH_LONG).show();cord.requestFocus();elseToast.makeText(MainActivity.this,请输入验证码,Toast.LENGTH_LONG).show();cord.requestFocus();break;default:
break;/验证码送成功后提示文字privatevoidreminderText()now.setVisibility(View.VISIBLE);handlerText.sendEmptyMessageDelayed(1,1000);HandlerhandlerText=newHandler()publicvoidhandleMessage(Messagemsg)if(msg.what=1)if(time0)now.setText(验证码已发送+time+秒);time-;handlerText.sendEmptyMessageDelayed(1,1000);elsenow.setText(提示信息);time=60;now.setVisibility(View.GONE);getCord.setVisibility(View.VISIBLE);elsecord.setText();now.setText(提示信息);time=60;now.setVisibility(View.GONE);getCord.setVisibility(View.VISIBLE);Handlerhandler=newHandler()OverridepublicvoidhandleMessage(Messagemsg)/TODOAo-generatedmethodstubsuper.handleMessage(msg);intevent=msg.arg1;intresult=msg.arg2;Objectdata=msg.obj;Log.e(event,event=+event);if(result=SMSSDK.RESULT_COMPLETE)/短信注册成功后,返回MainActivity,然后提示新好友if(event=SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)/提交验证码成功,验证通过Toast.makeText(getApplicationContext(),验证码校验成功,Toast.LENGTH_SHORT).show();handlerText.sendEmptyMessage
(2);elseif(event=SMSSDK.EVENT_GET_VERIFICATION_CODE)/服务器验证码发送成功reminderText();Toast.makeText(getApplicationContext(),验证码已经发送,Toast.LENGTH_SHORT).show();elseif(event=SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES)/返回支持发送验证码的国家列表Toast.makeText(getApplicationContext(),获取国家列表成功,Toast.LENGTH_SHORT).show();elseif(flag)getCord.setVisibility(View.VISIBLE);Toast.makeText(MainActivity.this,验证码获取失败,请重新获取,Toast.LENGTH_SHORT).show();phone.requestFocus();else(Throwable)data).printStackTrace();intresId=getStringRes(MainActivity.this,smssdk_network_error);Toast.makeText(MainActivity.this,验证码错误,Toast.LENGTH_SHORT).show();cord.selectAll();if(resId0)Toast.makeText(MainActivity.this,resId,Toast.LENGTH_SHORT).show();OverrideprotectedvoidonDestroy()super.onDestroy();SMSSDK.unregisterAllEventHandler();注:
appkey和appsecret:
在http:
/appkey和appsecrethandlerText是自定义设计的Handker对象,用于当服务器发送验证码后,提醒用户注意。