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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 开发环境、测试环境、生产环境、UAT环境、仿真环境详解「建议收藏」

    开发环境、测试环境、生产环境、UAT环境、仿真环境详解「建议收藏」开发环境(DEV):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。测试环境(UAT):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。生产环境(PROD):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户…

  • oracle11g安装完成如何打开界面

    oracle11g安装完成如何打开界面找到oracle11g的安装路径下的tnsnames.ora复制该文件到下面对应的文件替换即可(该文件(压缩包名instantclient_11_2可以自己下载,也可以向我要qq1406697403,下载后任意建一个文件夹如本文oracle11,将该压缩包解压后放到其中)然后做替换(看图)准备好plsql打开如下设置如:现在可以登录了!

  • cmd查看端口号是否占用

    cmd查看端口号是否占用1.查看所有端口号 netstat2.查看指定的端口号netstat-ano|findstr"8088"

  • python动图爱心表白_用python画动态图

    python动图爱心表白_用python画动态图初级画心学Python,感觉你们的都好复杂,那我来个简单的,我是直接把心形看作是一个正方形+两个半圆:于是这就很简单了,十行代码解决:importturtleastt.pensi…

  • Android中如何使用单选对话框[通俗易懂]

    Android中如何使用单选对话框[通俗易懂]给Button设置OnClick事件设置intid=0;finalString[]s={“单选A”,”单选B”,”单选C”,”单选D”,”单选E”};AlertDialog.BuilderDanItem=newAlertDialog.Builder(MainActivity.this);DanItem.setTitle(“单选列表”);…

  • PyQuery 详解「建议收藏」

    PyQuery 详解「建议收藏」PyQuery库是一个非常强大又灵活的网页解析库,如果你有前端开发经验,那么你应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery是Python仿照jQuery的严格实现,语法与jQuery几乎完全相同。安装跟安装其他库一样:>>>pip3installpyquery安装了之后,在程序里面就可以引用了,引用方法跟其他…

发表回复

您的电子邮箱地址不会被公开。

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