Android之短信验证码

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

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


程序的界面如下所示:



实现步骤:

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



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



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

        <meta-dataandroid: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 {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.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;@Overrideprotected 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() {@Overridepublic void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {// TODO Auto-generated method stubrefreshViews(arg0);}@Overridepublic void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable arg0) {// TODO Auto-generated method stub}});}//根据edittext的内容来判断是否应当出现“清除所有”的按钮xprivate 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();}@Overridepublic 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() {@Overridepublic void onResult(int code, String reason, String result) {// TODO Auto-generated method stubif(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() {@Overridepublic void onResult(int code, String reason, String result) {// TODO Auto-generated method stubif(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47863.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零编程经验,通过 GPT-4 十分钟开发了一个浏览器插件,并成功运行,实现了需求目标!

大佬蓝鸟ID: sundyme 零编程经验&#xff0c;通过 GPT-4 十分钟开发了一个浏览器插件&#xff0c;并成功运行&#xff0c;实现了需求目标&#xff01;太不可思意了&#xff0c;真正体会到了自然语言编程的魅力&#xff01; 下一步是利用Pinterest 的 API 接口实现自动发图&…

prompt --基本使用场景 使用技巧

基本使用场景 & 使用技巧 AI 的使用场景非常多&#xff0c;基础篇仅介绍最最最常用的两种。后续会介绍更多使用场景和方法。 场景1&#xff1a;问答问题 这个场景应该是使用 AI 产品最常见的方法。以 ChatGPT 为例&#xff0c;一般就是你提一个问题&#xff0c;ChatGPT …

【Prompt使用场景】

Prompt使用场景 场景1:问答问题(技巧1)场景2:基于示例回答(技巧2)场景3:推理场景4:无中生有——写代码(技巧3)场景5:锦上添花——改写内容(技巧4)场景6:锦上添花——信息解释场景7:化繁为简——信息总结(技巧5)场景8:化繁为简——信息提取(技巧6)场景1:问…

亲子关系与家庭教育

亲子关系作为人生中第一重要的人际关系&#xff0c;对其一生的发展有着重要的影响。要了解亲子关系的作用&#xff0c;首先要了解亲子关系的特点。1亲子关系的不可替代性是以血缘关系为基础的关系&#xff0c;是与生俱来的、不可替代的&#xff0c;即其他关系&#xff0c;如师生…

家庭教育(一)

家庭教育(一) ✨为什么家长或教育者需要学习"家庭教育" 家庭教育包含 学习能力学习习惯亲子沟通目标激励情商培养性格天赋婚姻关系青春成长 大部分孩子会遇到的问题 学习不积极&#xff0c;没有兴趣&#xff0c;家长逼着学、哄着学写作业拖拉&#xff0c;行为散漫上…

卓训教育:家庭教育的重要性,家庭教育的理念及基本方法

家庭是儿童成长过程中接触到的最重要的活动场所,幼儿的家庭教育是人生成长过程中最先也是最重要的启蒙教育。家庭教育是指家庭中的父母对子女,成年人对未成年孩子进行教育生活的活动过程。 家庭教育的意义是幼儿在进入社会接受集体教育之前和集体教育的同时,保证孩子身心健…

详细软件著作权的申请

一&#xff0c;申请注册账号并进行实名认证 在中国版权保护中心官网注册账号。 我是自己申请的所以选择的个人&#xff0c;这里根据实际情况进行选择后注册。 注册后进行实名认证&#xff08;3-7个工作日人工会进行审核&#xff0c;所以每个著作权人都要提前注册并进行实名认证…

【全栈第一课】Vue快速入门

往期文章 【全栈第二课】微信小程序快速入门 【全栈第三课】通过ChatGPT快速入门NodeJS 【全栈第四课】TypeScript 入门教程 一、前端工程化 JS的复用就是模块化 UI样式复用就是组件化(LayUI里面的都是组件化) 所以说前端工程化就是有规范的写,不能你一个样式我一个样式,不…

猿辅导、作业帮忙“圈钱”,跟谁学、有道、51Talk狂“烧钱”,在线教育钱途在哪?

文/螳螂财经&#xff08;ID:TanglangFin&#xff09; 作者/王文文 2020年&#xff0c;诸行业艰难&#xff0c;本应受疫情利好的在线教育行业&#xff0c;也同样冰火两重天。在线教育头部企业纷纷上演融资大戏&#xff0c;动辄以“亿美元”为单位&#xff0c;行业头部机构垄断…

有没有和作业帮一样的计算机,学霸君、学习宝和作业帮哪个好【对比】

国内各种开发商自然会推出新应用&#xff0c;制作了很多可以解决各种科目作业的应用。学霸君、学习宝和作业帮哪个好&#xff1f;大家还记得当年的假期作业是怎么完成的呢?自己搞定?抄同学的还是直接不做呢?现在看起来&#xff0c;抄作业已经 OUT 了&#xff0c;在搜索引擎上…

作业帮家长版的计算机怎么打开,作业帮家长版安装方法 作业帮家长版app特色...

作业帮怎么安装?作业帮家长版是一款帮助想辅导自己孩子功课但缺无从下手的家长们设计的app。下面小编就为玩家带来作业帮家长版安装方法&#xff0c;一起来看看吧。 作业帮家长版安装方法 作业帮家长版是一款帮助想辅导自己孩子功课但缺无从下手的家长们设计的app。通过这款ap…

ChatGPT终于被我问到胡说八道的程度了!

问&#xff1a;Python是强类型语言&#xff0c;还是弱类型语言 chatgpt&#xff1a;Python是强类型语言。Python很少会隐式地转换变量的类型&#xff0c;所以Python是强类型的语言 问&#xff1a;什么是强类型语言 chatgpt&#xff1a;强类型语言是指在编程语言中&#xff0…

【FPGA协议篇】UART通信及其verilog实现(代码采用传参实现模块通用性,适用于快速开发)

UART通信 UART通信简介verilog实现顶层模块接收模块发送模块 仿真波形实测结果 UART通信简介 ​ 即通用异步收发器(Universal Asynchronous Receiver/Transmitter)&#xff0c;是一种串行、异步、全双工的通信协议。特点是通信线路简单&#xff0c;适用于远距离通信&#xff0…

echarts图表使用v-show控制图表显示不全的问题

最近做echarts图表时&#xff0c;因为涉及到使用开关变量控制不同图表的显示隐藏&#xff0c;用 v-if 时会出现没有获取到dom结构而报错&#xff0c;所以改用 v-show&#xff0c;但是 v-show 本身是结构已经存在&#xff0c;当数据发生变化时&#xff0c;结构并未重新渲染&…

插件ucharts制作图表,tooltip报错不展示数据

项目场景&#xff1a; uni开发小程序 使用插件ucharts制作图表&#xff0c;tooltip报错不展示数据 后端返回两组数据&#xff0c;前端渲染两条折线图。横坐标一样。第1组数据只有0-5月的数据&#xff0c;另2组1-12月均有。点击6-12月段数据的折线图&#xff0c;报错如下&…

Microsoft Excel 教程:如何在 Excel 中显示或隐藏图表图例?

欢迎观看 Microsoft Excel 教程&#xff0c;小编带大家学习 Microsoft Excel 的使用技巧&#xff0c;了解如何在 Excel 中显示或隐藏图表图例。 可以显示或隐藏图表的图例。 显示图例可以向读者提供更多图表信息&#xff0c;而隐藏图例可以让图表拥有更简洁的外观。 单击要在…

Qt 绘制图表 - Qt Charts版

一、前言 自从 Qt 发布以来&#xff0c;给广大跨平台界面研发人员带来了无数的福利。但是Qt自己却一直没有提供自带的图表库&#xff0c;这就使得 QWT、QCustomPlot 等第三方图表库有了巨大的生存空间&#xff0c;为了降低开发成本&#xff0c;大家都涌向了这些第三方库。这种…

Highcharts 饼图数据是0的时候不显示

Highcharts 数据为0 时饼图的扇形不显示。 echarts 数据为0时会平分各项 Highcharts 平分的方法是当所有项的数据都为0时&#xff0c;把各项的值改为1这样就能平分&#xff0c;但是选中显示的数据还是0&#xff0c;解决的方法是加一个标志然后配置tooltip 参考Highcharts mak…

让v-charts中的图例显示在图表的下方以及解决title不生效问题

效果图&#xff1a; 1、让v-charts中的图例显示在图表的下方&#xff1a; 在 <ve-line :data"chartData" :legend"legend" ></ve-line>添加legend属性 并在data中加上this.legend { bottom: "0" };这样就完美解决了 2、解决title…

PPT 图表不显示对应类型的数据解决办法

晚上制表发现少了一行&#xff08;“10月”的一行&#xff09;&#xff0c;思来想去是这个原因&#xff1a; 记得在右键 “编辑数据” 时、在弹出的 excel 窗格中&#xff0c;首先拖动鼠标把紫色的框往下移&#xff0c;把 “10月” 的那一行也框进紫色的范围内。然后数据就正常…