赞
踩
注:本篇教程是在学习慕课网Android客户端验证之后http://www.imooc.com/comment/500
进行的Android Studio 实操整理.可以移步慕课视频学习.
OK;
进行Android客户端短信验证主要分为以下步骤;
1.申请mob.com账户,并创建一个Android应用.
注册流程,进入官网http://www.mob.com/一步一步注册就ok了.
登陆并创建一个Android应用,
登陆之后点击右上角头像
点击进入后台
界面是这样的,目前mob.com提供了:
1.分享功能
2.短信验证功能(红线圈出部分)
3.视频分享功能.
ps:短信的验证与分享功能是免费的.
点击短信验证码SDK,
进入到短信验证码的后台,
弹出创建应用对话框,输入应用名称:SMSDemo,选中android.
创建应用之后,后台是这样的…官方的引导教程.
ps: 1.进入到后台应用. 2.短信验证的开发包(一会下载的就是它)
点击右上角进入应用后台,先看一下应用的后台,
概况:
可以看到有APP key ,APP Secret .这两个相当SMSDemo与mob.com进行交互的时候秘钥. 要写入到应用程序中的.
短信设置:
这里面设置短信支持的运营商,全球,中国,港澳,短信的后缀,可以理解为微博小尾巴...
到此呢,mob.com端应用的创建已经完成.
2.下载短信验证开发包—-短信验证码SDK
在应用后台界面,点击下载SDK,
选择免费短信验证码SDK,
下载到本地之后解压,目录结构大概是:
打开SMSSDK后发现是一个eclipse下的一个Android项目.
到此,短信验证SDK下载完成.
3.创建项目并引用SMSSDK库.
创建一个新的工程,SMSDemo
导入SMSSDK,右键点击SMSDemo,选择new->Module,选择导入eclipse ADT peoject项目,
找到下载的SMSSDK,
点击ok.
此时的目录结构增加,
注:此时可能会因为你的sdk版本下载完全,导致错误,
表示你的SDK目录下没有android-8,所以我们可以由两种办法解决:
1):点开你的SDK Manager 下载android-8.
2):简单粗暴,快速见效.(修改的SDK版本号必须是已经下载完成的)
点开SMSSDK->双击build.grade
修改
compileSdkVersion 16
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
}
然后再重新build一下.就ok了.
言归正传,将SMSSDK添加到SMSDemo的依赖库中,
右键点击SMSDemo project->Open Module Settings
第四步,完成后弹出添加Module Dependecy 可选择的Module.
选中SMSDK,点击ok,
SMSDemo依赖中SMSSDK已经添加进来.
另外可以手动添加,移步到这位大牛博客细看.
http://www.cnblogs.com/avenwu/p/4299340.html
依赖添加完成后,点击app中的build.grade可以看到相关的依赖已经加了进来.
到此,SMSSDK依赖库的添加就完成了.
4.项目中使用SMSSDK
首先在manifests.xml配置权限,这是使用SMSSDK必须要有的
<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.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
添加Activity标签
<activity
android:name="com.mob.tools.MobUIShell" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" />
项目使用短信验证SDK主要
1>初始化SMSSDK
2>创建验证界面
3>获取注册界面信息
4>提交验证信息
5>显示返回成功
1>初始化SMSSDK
官方给的API中可以看到有两个方法用来初始化SMSSDK,initSDK();
解释一下参数:
context上下文
appkey 就是我们在mob.com创建应用时候生成APP Key
appSecret 就是我们在mob.com创建应用时候生成APP Secret
(warnOnReadContact 是否警告在读取联系人)
实测第一个跟第二个没有区别,使用过时的方法,在meizu手机上也能弹出警告,应该是flyme系统在应用触发读取联系人权限时做出保护措施.
这里我们最好在MainAcitivity.java中使用第二个方法.
package com.example.click.smsdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import java.util.HashMap;
import java.util.Random;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.RegisterPage;
public class MainActivity extends AppCompatActivity {
/**
* mob.com创建应用时候生成APP_KEY
*/
private static String APP_KEY = "a7de22b14b9d";
/**
* APP_SECRET
*/
private static String APP_SECRET = "29c2af302ab8c9f39d714d5e17b6c583";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1>初始化SMSSDK
SMSSDK.initSDK(MainActivity.this, APP_KEY, APP_SECRET, true);
//2>创建手机号注册界面
RegisterPage registerPage = new RegisterPage();
//3>获取注册界面信息
registerPage.setRegisterCallback(new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
//判断是否成功
if (result == SMSSDK.RESULT_COMPLETE) {
//返回的Object类型的data是一个HashMap集合
HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
//获取返回的信息
String country = (String) phoneMap.get("country");
String phone = (String) phoneMap.get("phone");
//4>提交验证信息
submitUserInfo(country, phone);
}
}
});
//5>验证成功,显示成功
registerPage.show(MainActivity.this);
}
/***
* 提交用户信息
*
* @param country 选择的国家
* @param phone 电话号码
*/
public void submitUserInfo(String country, String phone) {
String uid = Math.abs(new Random().nextInt()) + "";
String nickName = "SMSDemo";
String avatar = "头像";
SMSSDK.submitUserInfo(country, phone, uid, nickName, avatar);
}
}
SMSSDK.submitUserInfo是SMSSDK提供的用来提交验证信息的方法.
SMSSDK.submitUserInfo(country, phone, uid, nickName, avatar);
运行截图:
1.警告信息
2.注册界面
3.信息确认
4.短信验证
5.验证成功的时候会显示一个Toast,太快了没有截到图.
服务器端短信记录
项目地址:https://github.com/Alpha-chen/SMSDemo
欢迎大家,拍砖指正!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。