。
一、集成SDK
1、首先需要下载SDK
我这里下的是,
基于AS开发平台的,也有eclipse的,不过现在基本上都在用Google亲儿子,eclipse已经被大多数android开发者抛弃了,现在想想还(曾)有(经)一(被)点(虐)小(千)怀(百)念(遍)。
2、解压下载的压缩文件
主要用到里面的这几个jar包
3、将这四个玩意儿放到项目的libs目录下
4、在app目录下的build.gradle中加上如下图所示代码
好了,集成的工作就做好了,没错,就是这么简单,接下来就是代码了。
二、撸代码
首先初始化SDK
package com.hbh.cl.smsvalidatedemo;
import android.app.Application;
import cn.smssdk.SMSSDK;
/**
* Created by hbh.
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SMSSDK.initSDK(this, "你的appkey", "你的appsecret");
}
}
至于appkey和appsecret可以在注册用户后在个人中心查看,如下
登录页面
package com.hbh.cl.smsvalidatedemo;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
/**
* Created by hbh
*/
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private Button validateNum_btn;
private Button landing_btn;
private EditText userName;
private EditText validateNum;
public EventHandler eh; //事件接收器
private TimeCount mTimeCount;//计时器
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initEvent();
init();
}
private void initEvent(){
userName = (EditText) findViewById(R.id.userName);
validateNum = (EditText) findViewById(R.id.validateNum);
validateNum_btn = (Button) findViewById(R.id.validateNum_btn);
landing_btn = (Button) findViewById(R.id.landing_btn);
validateNum_btn.setOnClickListener(this);
landing_btn.setOnClickListener(this);
mTimeCount = new TimeCount(60000, 1000);
}
/**
* 初始化事件接收器
*/
private void 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) { //提交验证码成功
startActivity(new Intent(LoginActivity.this, MainActivity.class)); //页面跳转
}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功
}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ //返回支持发送验证码的国家列表
}
}else{
((Throwable)data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.validateNum_btn:
// SMSSDK.getSupportedCountries();//获取短信目前支持的国家列表
if(!userName.getText().toString().trim().equals("")){
if (checkTel(userName.getText().toString().trim())) {
SMSSDK.getVerificationCode("+86",userName.getText().toString());//获取验证码
mTimeCount.start();
}else{
Toast.makeText(LoginActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LoginActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show();
}
break;
case R.id.landing_btn:
if (!userName.getText().toString().trim().equals("")) {
if (checkTel(userName.getText().toString().trim())) {
if (!validateNum.getText().toString().trim().equals("")) {
SMSSDK.submitVerificationCode("+86",userName.getText().toString().trim(),validateNum.getText().toString().trim());//提交验证
}else{
Toast.makeText(LoginActivity.this, "请输入验证码", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LoginActivity.this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LoginActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show();
}
break;
}
}
/**
* 正则匹配手机号码
* @param tel
* @return
*/
public boolean checkTel(String tel){
Pattern p = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$");
Matcher matcher = p.matcher(tel);
return matcher.matches();
}
@Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eh);
}
/**
* 计时器
*/
class TimeCount extends CountDownTimer{
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long l) {
validateNum_btn.setClickable(false);
validateNum_btn.setText(l/1000 + "秒后重新获取");
}
@Override
public void onFinish() {
validateNum_btn.setClickable(true);
validateNum_btn.setText("获取验证码");
}
}
}
对应的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:gravity="center"
android:orientation="vertical">
<EditText
android:id="@+id/userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/shape_style"
android:hint="@string/tel"
android:textColorHint="@color/gray"
android:layout_gravity="center_vertical"
android:singleLine="true"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp">
<EditText
android:id="@+id/validateNum"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:padding="10dp"
android:background="@drawable/shape_style"
android:hint="@string/validate"
android:textColorHint="@color/gray"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
android:singleLine="true"
android:textSize="16sp" />
<Button
android:id="@+id/validateNum_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/validateNum"/>
</LinearLayout>
<Button
android:id="@+id/landing_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/landing"/>
</LinearLayout>
<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" />
好了,IT'S ALL OVER. 就是那么简单,代码基本上全都贴上了,样子就是这个样子,demo丑了点
。
还有一些其他的相关功能大家可以自己去看Mob的官方文档。
筒子们,再见