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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • origin如何绘制双y轴柱状图_Graphpad柱状图双Y轴

    origin如何绘制双y轴柱状图_Graphpad柱状图双Y轴origin横坐标的标注如何修改成双行显示呢?shift+enter,可以换行思路:在两个图层上分别绘制两个柱状图,然后将两个图层合并。第一步:建立一个X列,四个Y列。其中,两列数据中间加上两个空列第二步:绘制第一个柱状图第三步:绘制第二个柱状图第四步:两图层合并点击合并按钮第五步:接下来就是坐标轴的显示基本上就完成了…

    2022年9月30日
    1
  • 走近webpack(4)–css相关拓展

    我们前面已经学了很多webpack基本的处理情况,一句话总结就是,一个优秀的webpack项目,主要的核心用法就是整合loader和plugin去处理你想要的任何需求。下面,咱们一起来学学如何用we

    2022年3月25日
    32
  • 在我一生中最猥琐的时候遇见你(1)

    在我一生中最猥琐的时候遇见你(1)【书名】在我一生最猥琐的时候遇见你【作者】无良某鸡【文案】当我还是一个光屁股天使的时候,有一天,我在凡间晃悠。  突然我看到前面那个头上长着红色山羊角的男人从他的黑色斗篷里落下了一个东西。  “嗨,先生,”我朝他喊,“您掉东西了!”  那人不仅没有回头,反而越走越快,转眼就消失在街角。  我走上前去捡起落在地上的东西,那是一本小说.  小说的封面,一男一女紧密相拥着。  …

    2022年6月2日
    32
  • hive lateral view 与 explode详解[通俗易懂]

    hive lateral view 与 explode详解[通俗易懂]1.explodehivewiki对于expolde的解释如下:explode()takesinanarray(oramap)asaninputandoutputstheelementsofthearray(map)asseparaterows.UDTFscanbeusedintheSELECTexpressionlistandas

    2022年9月21日
    0
  • 一阶系统又称为惯性系统_舵机惯性控制

    一阶系统又称为惯性系统_舵机惯性控制1.PID.py#PID控制一阶惯性系统测试程序#*****************************************************************##增量式PID系统##**************************************

    2022年10月4日
    0
  • excel中pmt函数是什么意思_excel利用函数计算

    excel中pmt函数是什么意思_excel利用函数计算关于PMT函数,从百科中就可以搜到基本解释:PMT函数即年金函数,基于固定利率及等额分期付款方式,返回贷款的每期付款额。PMT(Rate,Nper,Pv,Fv,Type)。语法参数●R

    2022年8月6日
    3

发表回复

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

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