1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android短信验证(手机号注册 绑定手机号获取验证码)实例

Android短信验证(手机号注册 绑定手机号获取验证码)实例

时间:2022-09-25 06:58:07

相关推荐

Android短信验证(手机号注册 绑定手机号获取验证码)实例

今天写一个常见的功能——手机app中注册或绑定手机号的获取验证码的功能。也就是短信验证功能

具体效果就是,你在注册界面填写手机号,点击获取验证码按钮,---然后会收到验证短信,填入验证码后点击注册按钮,如果验证正确就可以跳转到另外一个界面

1.首先大家需要在mob官网注册一个账号,mob是一个免费的短信验证平台

2.在后台创建应用

3.下载对应的sdk

4.将sdk作为一个library导入到你的项目中

5.现在就可以在你的项目中编写代码使用mob提供的这个功能了

具体代码如下:

首先配置文件加入权限:

XML/HTML代码 <uses-permissionandroid:name="android.permission.READ_CONTACTS"/><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.RECEIVE_SMS"/><uses-permissionandroid:name="android.permission.GET_TASKS"/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>

然后声明activity(这是固定的不能修改,直接复制粘贴到你的配置文件就行)

XML/HTML代码 <activityandroid:name="cn.smssdk.SMSSDKUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize"/>

注册界面xml布局文件

XML/HTML代码 <?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/login_input_phone_et"android:layout_width="280dp"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="107dp"android:ems="10"android:hint="请输入手机号"android:inputType="phone"/><requestFocus/><EditTextandroid:id="@+id/login_input_code_et"android:layout_width="170dp"android:layout_height="wrap_content"android:layout_alignLeft="@+id/login_input_phone_et"android:layout_below="@+id/login_input_phone_et"android:layout_marginTop="44dp"android:hint="请输入验证码"android:inputType="textPassword"></EditText><Buttonandroid:id="@+id/login_request_code_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignRight="@+id/login_input_phone_et"android:layout_alignTop="@+id/login_input_code_et"android:text="获取验证码"/><Buttonandroid:id="@+id/login_commit_btn"android:layout_width="280dp"android:layout_height="wrap_content"android:layout_alignLeft="@+id/login_input_code_et"android:layout_below="@+id/login_input_code_et"android:layout_marginTop="44dp"android:text="注册"/></RelativeLayout>

注册界面activity

Java代码 packagecom.mobdemo.view;importcn.smssdk.EventHandler;importcn.smssdk.SMSSDK;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.text.TextUtils;importandroid.util.Log;importandroid.view.Gravity;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.FrameLayout;importandroid.widget.ProgressBar;importandroid.widget.Toast;importandroid.widget.FrameLayout.LayoutParams;publicclassLoginActivityextendsActivityimplementsOnClickListener{StringAPPKEY="101732155b605";StringAPPSECRETE="69d1850f4b74100266ab576b64e6cb16";//手机号输入框privateEditTextinputPhoneEt;//验证码输入框privateEditTextinputCodeEt;//获取验证码按钮privateButtonrequestCodeBtn;//注册按钮privateButtoncommitBtn;//inti=30;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);init();}/***初始化控件*/privatevoidinit(){inputPhoneEt=(EditText)findViewById(R.id.login_input_phone_et);inputCodeEt=(EditText)findViewById(R.id.login_input_code_et);requestCodeBtn=(Button)findViewById(R.id.login_request_code_btn);commitBtn=(Button)findViewById(R.id.login_commit_btn);requestCodeBtn.setOnClickListener(this);commitBtn.setOnClickListener(this);//启动短信验证sdkSMSSDK.initSDK(this,APPKEY,APPSECRETE);EventHandlereventHandler=newEventHandler(){@OverridepublicvoidafterEvent(intevent,intresult,Objectdata){Messagemsg=newMessage();msg.arg1=event;msg.arg2=result;msg.obj=data;handler.sendMessage(msg);}};//注册回调监听接口SMSSDK.registerEventHandler(eventHandler);}@OverridepublicvoidonClick(Viewv){StringphoneNums=inputPhoneEt.getText().toString();switch(v.getId()){caseR.id.login_request_code_btn://1.通过规则判断手机号if(!judgePhoneNums(phoneNums)){return;}//2.通过sdk发送短信验证SMSSDK.getVerificationCode("86",phoneNums);//3.把按钮变成不可点击,并且显示倒计时(正在获取)requestCodeBtn.setClickable(false);requestCodeBtn.setText("重新发送("+i+")");newThread(newRunnable(){@Overridepublicvoidrun(){for(;i>0;i--){handler.sendEmptyMessage(-9);if(i<=0){break;}try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}}handler.sendEmptyMessage(-8);}}).start();break;caseR.id.login_commit_btn://将收到的验证码和手机号提交再次核对SMSSDK.submitVerificationCode("86",phoneNums,inputCodeEt.getText().toString());//createProgressBar();break;}}/****/Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){if(msg.what==-9){requestCodeBtn.setText("重新发送("+i+")");}elseif(msg.what==-8){requestCodeBtn.setText("获取验证码");requestCodeBtn.setClickable(true);i=30;}else{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();Intentintent=newIntent(LoginActivity.this,MainActivity.class);startActivity(intent);}elseif(event==SMSSDK.EVENT_GET_VERIFICATION_CODE){Toast.makeText(getApplicationContext(),"正在获取验证码",Toast.LENGTH_SHORT).show();}else{((Throwable)data).printStackTrace();}}}}};/***判断手机号码是否合理**@paramphoneNums*/privatebooleanjudgePhoneNums(StringphoneNums){if(isMatchLength(phoneNums,11)&&isMobileNO(phoneNums)){returntrue;}Toast.makeText(this,"手机号码输入有误!",Toast.LENGTH_SHORT).show();returnfalse;}/***判断一个字符串的位数*@paramstr*@paramlength*@return*/publicstaticbooleanisMatchLength(Stringstr,intlength){if(str.isEmpty()){returnfalse;}else{returnstr.length()==length?true:false;}}/***验证手机格式*/publicstaticbooleanisMobileNO(StringmobileNums){/**移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188*联通:130、131、132、152、155、156、185、186电信:133、153、180、189、(1349卫通)*总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9*/StringtelRegex="[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。if(TextUtils.isEmpty(mobileNums))returnfalse;elsereturnmobileNums.matches(telRegex);}/***progressbar*/privatevoidcreateProgressBar(){FrameLayoutlayout=(FrameLayout)findViewById(android.R.id.content);FrameLayout.LayoutParamslayoutParams=newFrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);layoutParams.gravity=Gravity.CENTER;ProgressBarmProBar=newProgressBar(this);mProBar.setLayoutParams(layoutParams);mProBar.setVisibility(View.VISIBLE);layout.addView(mProBar);}@OverrideprotectedvoidonDestroy(){SMSSDK.unregisterAllEventHandler();super.onDestroy();}}

验证成功的界面我就不写了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。