Android Studio下Android客户端短信验证(详细+错误处理)
来源:互联网 发布:caffe on spark 编辑:程序博客网 时间:2024/06/05 22:30
注:本篇教程是在学习慕课网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
欢迎大家,拍砖指正!
- Android Studio下Android客户端短信验证(详细+错误处理)
- 关于Android客户端短信验证
- Android studio 下使用mob的短信验证码SMSSDK
- Android studio攻城计之短信验证
- Android studio如何实现短信验证
- android集成短信验证功能(Eclipse下)
- Android studio 2.1 集成第三方短信验证类库
- Android studio 2.1 集成第三方短信验证类库
- Android Studio Mob快速集成短信验证(图文教程)
- Android Studio Mob快速集成短信验证(图文教程)
- 基于SMSSDK的Android studio 的短信验证
- android短信验证功能
- Android 短信验证
- android之短信验证
- Android-短信验证功能
- Android短信验证
- Android短信验证+源码
- Android短信验证
- android快速开发工具SelectorChapek安装使用教程
- 前端框架学习-jqgrid
- IOS MapKit学习笔记
- Qt设计器中,使用QToolBar控件的技巧
- HDFS浅析
- Android Studio下Android客户端短信验证(详细+错误处理)
- xcode7 找不到.dylib
- contrib module missing in opencv 3.0? up vote 3 down vote favorite I am using OpenCV 3.0 beta.
- 数据库优化设计方案有哪些?
- 奔向家的喜悦
- ceph部署过程
- UI一揽子计划 16 (网络编程、HTTP协议、iOS 实现网络编程、服务器接口)
- NsDate
- 使用python进行文本分类