android短信验证码方案,Android之短信验证码

android短信验证码方案,Android之短信验证码今天所使用的方案只是android手机设备集成短信验证码功能的方案之一。我们所采用的方案是使用聚合数据的短信验证sdk。接口文档:https://www.juhe.cn/docs/api/…程序的界面如下所示:实现步骤:1.到聚合数据官网上申请短信验证SDK数据,生成AppKey,如下图所示:2.配置工程,把相关的sdk库导入到Project中去,:3.配置AndroidManifest.xm…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天所使用的方案只是android手机设备集成短信验证码功能的方案之一。

我们所采用的方案是使用聚合数据的短信验证sdk。

接口文档:https://www.juhe.cn/docs/api/…

程序的界面如下所示:

bVCdMg

实现步骤:

1.到聚合数据官网上申请短信验证SDK数据,生成AppKey,如下图所示:

bVCdMr

2.配置工程,把相关的sdk库导入到Project中去,:

bVCdMx

3.配置AndroidManifest.xml文件,在Application节点中加入以下代码:

android:name=”JUHE_KEY”

android:value=”你的appkey” />

4.在src中加入MyApplication类,并且在AndroidManifest.xml文件中将application的name属性设置为src中定义的MyApplication(如android:name=”com.bear.smscaptcha.MyApplication”),在MyApplication的onCreate()方法中调用接口初始化:

import com.thinkland.sdk.util.CommonFun;

import android.app.Application;

public class MyApplication extends Application {

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

// 在使用SDK各组件之前初始化context信息,传入ApplicationContext

// 注意该方法要再setContentView方法之前实现

/**

* 初始化方法

*

* @param context

* @needFriends 是否需要好友功能

*/

CommonFun.initialize(getApplicationContext(), false);

}

}

5.完成主Demo类,内容如下:

import android.app.Activity;

import android.content.pm.ActivityInfo;

import android.os.Bundle;

import android.text.Editable;

import android.text.Html;

import android.text.TextWatcher;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import com.thinkland.sdk.sms.SMSCaptcha;

import com.thinkland.sdk.util.BaseData.ResultCallBack;

public class MainActivity extends Activity implements OnClickListener{

private SMSCaptcha mCaptcha; //短信sdk主对象

private EditText etPhoneNum; //手机号码输入框

private ImageView ivClear; //清除已经输入内容的图标

private Button btnNext; //下一步按钮

private EditText etCaptchaNum; //验证码输入框

private Button btnSubmit; //提交验证码

private ImageView ivSmsClear;

private TextView tvUnreceiveIdentify;

private static final int RETRY_INTERVAL = 60; //设置一个倒计时时间

private int time = RETRY_INTERVAL;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

setContentView(R.layout.activity_main);

initData();

setupViews();

}

private void initData(){

//初始化sdk主操作对象

mCaptcha = SMSCaptcha.getInstance();

}

/**

* 初始化界面控件

*/

private void setupViews(){

btnNext = (Button) findViewById(R.id.btn_next);

ivClear = (ImageView) findViewById(R.id.iv_clear);

btnNext.setOnClickListener(this);

ivClear.setOnClickListener(this);

etCaptchaNum = (EditText) findViewById(R.id.et_sms_captcha);

btnSubmit = (Button) findViewById(R.id.btn_submit);

ivSmsClear = (ImageView) findViewById(R.id.iv_sms_clear);

btnSubmit.setOnClickListener(this);

ivSmsClear.setOnClickListener(this);

tvUnreceiveIdentify = (TextView) findViewById(R.id.tv_unreceive_identify);

etPhoneNum = (EditText) findViewById(R.id.et_write_phone);

etPhoneNum.setText(“”);

etPhoneNum.requestFocus();

etPhoneNum.addTextChangedListener(new TextWatcher() {

@Override

public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

// TODO Auto-generated method stub

refreshViews(arg0);

}

@Override

public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,

int arg3) {

// TODO Auto-generated method stub

}

@Override

public void afterTextChanged(Editable arg0) {

// TODO Auto-generated method stub

}

});

}

//根据edittext的内容来判断是否应当出现“清除所有”的按钮x

private void refreshViews(CharSequence s){

if(s.length() >0){

btnNext.setEnabled(true);

ivClear.setVisibility(View.VISIBLE);

}else{

btnNext.setEnabled(false);

ivClear.setVisibility(View.GONE);

}

}

//倒计时方法

private void countDown(){

new Thread(new Runnable() {

public void run() {

while(time– > 0){

final String unReceive = MainActivity.this.getResources().getString(R.string.smssdk_receive_msg, time);

runOnUiThread(new Runnable() {

public void run() {

tvUnreceiveIdentify.setText(Html.fromHtml(unReceive));

tvUnreceiveIdentify.setEnabled(false);

}

});

try {

Thread.sleep(1000);

} catch (Exception e) {

// TODO: handle exception

}

}

time = RETRY_INTERVAL;

}

}).start();

}

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.btn_next:

//删除掉字符串中所有的空格

String phone = etPhoneNum.getText().toString().trim().replace(“\\s*”, “”);

/**

* 请求短信验证码

*

* code 返回码:

服务器: 0 成功; 1 错误;

本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常

reason 返回信息 成功或错误原因.

result 返回结果,JSON格式.错误或者无返回值时为空.

*/

mCaptcha.sendCaptcha(phone, new ResultCallBack() {

@Override

public void onResult(int code, String reason, String result) {

// TODO Auto-generated method stub

if(code == 0){

//调用成功

}

}

});

countDown();

break;

case R.id.iv_clear:

etPhoneNum.getText().clear();

break;

case R.id.btn_submit:

String phoneNumber = etPhoneNum.getText().toString().trim().replace(“\\s*”, “”);

String code = etCaptchaNum.getText().toString().trim().replace(“\\s*”, “”);

/**

* 验证短信验证码

*

* code 返回码:

服务器: 0 成功; 1 错误;

本地: -2 本地网络异常; -3 服务器网络异常;-4 解析错误;-5初始化异常

reason 返回信息 成功或错误原因.

result 返回结果,JSON格式.错误或者无返回值时为空.

*/

mCaptcha.commitCaptcha(phoneNumber, code, new ResultCallBack() {

@Override

public void onResult(int code, String reason, String result) {

// TODO Auto-generated method stub

if(code == 0){

//短信验证成功

Toast.makeText(MainActivity.this, “验证成功!!!!!!!!”, Toast.LENGTH_LONG).show();

}else{

//验证失败

Toast.makeText(MainActivity.this, “失败!!!!!!!!” + reason, Toast.LENGTH_LONG).show();

}

}

});

break;

case R.id.iv_sms_clear:

break;

default:

break;

}

}

}

最后,附上demo代码的工程源码压缩包:

AndroidSMSCaptcha

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160014.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ROC曲线的理解

    ROC曲线的理解ROC曲线的理解和python绘制ROC曲线ROC曲线的理解考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被预测成正类,即为真正类(Truepositive),如果实例是负类被预测成正类,称之为假正类(Falsepositive)。相应地,如果实例是负类被预测成负类,称之为真负类(Truenega

    2022年5月16日
    47
  • Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

    Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

    2022年2月10日
    65
  • Hive实现笛卡尔积

    Hive实现笛卡尔积如下方式可以实现笛卡尔积select*fromaleftjoinbon1=1假设a表100行,b表20万行,则笛卡尔积后为100*20w=2000w行假设a表100行,b表20万*60行,则笛卡尔积后为100*60*20w=12亿行假设a表1000行,b表20万行,则笛卡尔积后为1000*20w=20000w行=2亿行严重影响执行效率…

    2022年7月11日
    21
  • 电脑磁盘未知没有初始化_win7怎么进去计算机管理

    电脑磁盘未知没有初始化_win7怎么进去计算机管理win7系统想必大家都非常熟悉吧,然而有时候可能会碰到win7系统电脑新增的硬盘没有初始化的情况,想必大家都遇到过win7系统电脑新增的硬盘没有初始化的情况吧,那么应该怎么处理win7系统电脑新增的硬盘没有初始化呢?我们依照  1、当正常增加新硬盘后,登录系统,打开磁盘管理,系统会自动打开【磁盘初始化和转换向导】,单击“下一步”; 2、正确选择要初始化的磁盘,单击“下一步”;这样的步骤就行了;下…

    2022年9月21日
    4
  • PS学习总结三:修图必备的高阶操作

    PS学习总结三:修图必备的高阶操作目录一:滤镜二:滤镜下的一些操作三:智能对象四:通道五:通道抠图步骤六:裁剪工具七:修复工具八:仿制图章九:内容识别十:操作变形一:滤镜ps滤镜:主要通过各种命令来实现图像的各种特殊效果。智能滤镜优点:可编辑性强 有自带的蒙版,可以对局部进行处理 双击滤镜名称,修改滤镜参数 一个图层上可以添加多个滤镜效果cameraraw滤镜打开单反相机源文件格式cr2,那么回自动使用cameraraw滤镜打开。是摄影师后期专业的调色插件,他

    2022年6月16日
    34
  • Nginx+FastCGI到底是谁影响超时时间[通俗易懂]

    Nginx+FastCGI到底是谁影响超时时间

    2022年2月17日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号