手机获取验证码 ---SMS
来源:互联网 发布:两年数据对比ppt 编辑:程序博客网 时间:2024/06/10 03:59
本人通过mob官网进行学习此demo此官网也可以进行操作的三登录功能
进入官网之后的路或者注册账号,进行下载sdk
下载完成之后我们解压得到几个文件,里面我们有几个会用到的
我们将后4个包进行添加到工程的lib里面进行编译即可使用;
接下来就是各种操作进行实现功能,下面是在build_gradle面进行配置(必须要进行的一个操作)
repositories{ flatDir{ dirs 'libs' //就是你放aar的目录地址 }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile name:'SMSSDK-3.0.0',ext:'aar' compile name:'SMSSDKGUI-3.0.0',ext:'aar' testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0'}
紧接着就是在清单文件里面进行配置
//我们需要用到的权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" //{这个是在mob官网里面创建应用获得到的appkey} android:windowSoftInputMode="stateHidden|adjustResize"/> <meta-data android:name="Mob-AppKey" android:value="203480017e7a1"/> //{这个是在mob官网里面创建应用获得到的appcreat} <meta-data android:name="Mob-AppSecret" android:value="5399c9fbbfaa4a92360885c1bef9b1a0{这个是在mob官网里面创建应用获得到的}"/>
然后是我的布局文件.xml
<EditText android:id="@+id/phone" android:hint="请输入手机号" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/yzm" android:hint="输入验证码" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/huoqu_btn" android:layout_weight="1" android:layout_width="0dp" android:onClick="onClick" android:layout_height="wrap_content" android:text="获取验证码"/> </LinearLayout> <Button android:id="@+id/btn" android:text="登录" android:onClick="onClick" android:layout_width="match_parent" android:layout_height="wrap_content" />
最后进行展示的就我集成好的代码文件:请看下面
package renchaofang.bawei.com.smsstudy;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import cn.smssdk.EventHandler;import cn.smssdk.SMSSDK;import static cn.smssdk.SMSSDK.getSupportedCountries;import static cn.smssdk.SMSSDK.getVerificationCode;import static cn.smssdk.SMSSDK.submitVerificationCode;public class MainActivity extends AppCompatActivity{ private final String TAG="--MainActivity--"; private EventHandler eventHandler; private EditText phone; private EditText yzm; private Button button1; private Button button2; private EventHandler eh; private boolean isChange; //控制按钮样式是否改变 private boolean tag = true; //每次验证请求需要间隔60S private int i=60; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.arg1) { case 0: //客户端验证成功,可以进行注册,返回校验的手机和国家代码phone/country Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show(); break; case 1: //获取验证码成功 Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show(); break; case 2: //返回支持发送验证码的国家列表 Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show(); break; } } }; private String yan; private String iphone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //找到资源控件 init(); eh=new EventHandler(){ @Override public void afterEvent(int event, int result, Object data) { if (result == SMSSDK.RESULT_COMPLETE) { //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //提交验证码成功 Message msg = new Message(); msg.arg1 = 0; msg.obj = data; handler.sendMessage(msg); Log.d(TAG, "提交验证码成功"); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { Message msg = new Message(); //获取验证码成功 msg.arg1 = 1; msg.obj = "获取验证码成功"; handler.sendMessage(msg); Log.d(TAG, "获取验证码成功"); } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) { Message msg = new Message(); //返回支持发送验证码的国家列表 msg.arg1 = 2; msg.obj = "返回支持发送验证码的国家列表"; handler.sendMessage(msg); Log.d(TAG, "返回支持发送验证码的国家列表"); } } else { Message msg = new Message(); //返回支持发送验证码的国家列表 msg.arg1 = 3; msg.obj = "验证失败"; handler.sendMessage(msg); Log.d(TAG, "验证失败"); ((Throwable) data).printStackTrace(); } } }; button1.setClickable(false); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { iphone = phone.getText().toString(); if(iphone.equals("")){ Toast.makeText(MainActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show(); }else {//填写了手机号码 if(isMobileNO(iphone)){ //如果手机号码无误,则发送验证请求 button1.setClickable(true); changeBtnGetCode(); getSupportedCountries(); getVerificationCode("86", iphone); }else{ //手机号格式有误 Toast.makeText(MainActivity.this,"手机号格式错误,请检查",Toast.LENGTH_SHORT).show(); } } } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取 得到验证码 yan = yzm.getText().toString(); if (yan.equals("")){ Toast.makeText(MainActivity.this,"验证码不能为空",Toast.LENGTH_SHORT).show(); }else{ //填写了验证码,进行验证 submitVerificationCode("86", iphone, yan); } } }); SMSSDK.registerEventHandler(eh); //注册短信回调 } public void init(){ phone = (EditText)findViewById(R.id.phone); yzm = (EditText)findViewById(R.id.yzm); button1 = (Button)findViewById(R.id.huoqu_btn); button2 = (Button)findViewById(R.id.btn); } private void changeBtnGetCode() { Thread thread = new Thread() { @Override public void run() { if (tag) { while (i > 0) { i--; //如果活动为空 if (MainActivity.this == null) { break; } MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { button1.setText("获取验证码(" + i + ")"); button1.setClickable(false); } }); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } tag = false; } i = 60; tag = true; if (MainActivity.this != null) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { button1.setText("获取验证码"); button1.setClickable(true); } }); } } }; thread.start(); } private boolean isMobileNO(String phone) { /* 移动: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 */ String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 if (TextUtils.isEmpty(phone)) return false; else return phone.matches(telRegex); }}
END…..
加油。。。。。!
阅读全文
0 0
- 手机获取验证码 ---SMS
- [IOS]SMS获取&验证手机验证码
- SMS手机验证
- SMS手机验证
- 获取手机验证码
- 手机获取验证码
- 获取手机端验证码
- iOS 获取手机验证码
- Android获取手机验证码。
- 手机注册获取验证码
- 获取手机验证码&获取普通验证码
- 手机获取验证码的功能
- Anroid手机验证码的获取
- json 转换,手机获取验证码
- Android Demo手机获取验证码
- Java注册手机获取验证码
- 获取手机验证码并计时
- 获取手机验证码js计时器
- 2、粘包现象(struct模块)
- HDU 3829 Cat VS Dog(二分图最大独立集)
- gcc编译C和C++程序
- iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t-一
- Job:前端基础
- 手机获取验证码 ---SMS
- IO体系图
- 整理一份Myeclipse快捷键
- 单例模式
- OpenCV图像剪切,超出图像区域指定颜色填充
- 集训第二十三天(2017/8/22):树状数组和团队练习赛
- 【NYOJ
- 被我们忽视的自定义属性
- C\C++代码优化的27个建议