本文来自:CSDN

感谢作者:qq_35812301(其实就是我的号!)

查看原文:http://blog.csdn.net/qq_35812301/article/details/79150775

   一:Android studio 搭配 Mobd的SDK的环境我整整搞了一个下午加晚上也没成功,上网找也不OK,最后实在不行跑去问了客服我才知道问题在哪里出错了!

就是我导入jar和aar包的问题上出错!弄这个验证码我才知道 还有aar的存在的。

*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

*.aar:包含所有资源,class以及res资源文件全部包含

现在我把搭配的sdk(mod)错误都一一列举出来

1):先加入包

          第一错误:

                                                    (图一)

                                                    (图二)

然后运行===》最后错误

                                                    (图三)

   第二个错误然后又根据第一个查到 aar要添加这个  apply plugin: 'com.android.library'

                                                    (图四)

显示的错误:

                                                    (图⑤)

   第三个:  上网查到好像说:

  apply plugin: 'com.android.application'

apply plugin: 'com.android.library'

  1. 这个两个会产生冲突, 那感情好我直接删掉 apply plugin: 'com.android.application' ,本来以为成功来着,但是还是出错

    (图⑥)   

又上网查了一下 好像必须要有   apply plugin: 'com.android.application' ,那我之好把之前的加的给删掉

  1. 反正就是这个三个弄我好久好久。。。。
    根据客服回答,我才弄懂,哦!原来这样的。。。。

(图⑦)

  1.  
  1.              (图⑧)
  1.  

好了,我的问题解决了

2):首先去mob的 官网下载  包 

     1:如果想要实现手机验证码,那就必须要在官网注册一个账号啊。         

  

                                                    (图一)

     2:注册好之后, 去后台申请 SSMSDK验证码哦(官网也有)

            旧版后台入口:登入新版后台之后,页面右上角有“回到旧版”的按钮。如下图 :

(图二)

         新版后台如何创建应用获得AppKey

登录后台之后,点击下图中的“添加应用”按钮,即会弹出创建新应用对话框。

请正确填写应用的名称,特别是用到短信验证码SDK的用户,此应用名称会显示在验证短信内容中。此应用名称可在左侧目录的“设置”中修                 改(见图六)

(图三)

               新版后台如何添加产品

填写应用名称保存成功后,会跳转到(图四)所示页面,根据自己的需求,点击左侧列表中相应SDK添加即可。

(如只创建了appkey,而没有添加任何一个SDK产品,则appkey无法正常使用)

(图四)

同一个应用下添加多个SDK,则这些SDK将会使用同一个App Key和App Secret。

下图左侧列表中已添加的3个SDK产品,将会使用同一个App Key和App Secret。

(图五 -0)

下面(图五 -1) 是我的验证码情况, 根据自个需要什么就添加什么

                                                                                                    (图五 -1) 

  新版后台如何查看和修改应用信息:点击下图中的“设置”即可查看和修改。

(图六)

       如何在新后台查看应用及数据:点击图中小三角按钮,

即可显示所有应用(包括之前在旧版后台创建的应用),点击相应的应用即可自由切换查看相应的数据。

(图七)

 3:配置Android studio环境

   打开刚刚下载sdk文件夹找到SMSSDK把包放到libs

            

(图1)

(图2)

 4:在AndroidManifest.xml添加权限

              

(图3)

在Application节点下添加以下属性:

 
 
1
android:name="com.mob.MobApplication"

添加以下Activity:

 
1
2
3
4
5
<activity
   android:name="com.mob.tools.MobUIShell"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:windowSoftInputMode="stateHidden|adjustResize"/>

在Application节点下添加以下meta-data:

 
 
1
2
3
<!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data -->
<meta-data android:name="Mob-AppKey"android:value="你的AppKey"/>
<meta-data android:name="Mob-AppSecret"android:value="你的AppSecret"/>

通过代码配置:

如果选择通过代码配置,则不需要继承MobApplication,只要在使用SMSSDK之前,调用以下代码:

 
 
1
2
// 通过代码注册你的AppKey和AppSecret
MobSDK.init(context,"你的AppKey","你的AppSecret");

AndroidManifest.xml的代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="zhu.com.yzm4">
  4. <uses-permission android:name="android.permission.READ_CONTACTS" />
  5. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  8. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  9. <uses-permission android:name="android.permission.INTERNET" />
  10. <uses-permission android:name="android.permission.RECEIVE_SMS" />
  11. <uses-permission android:name="android.permission.READ_SMS" />
  12. <uses-permission android:name="android.permission.GET_TASKS" />
  13. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  14. <application
  15. android:name="com.mob.MobApplication"
  16. android:allowBackup="true"
  17. android:icon="@mipmap/ic_launcher"
  18. android:label="@string/app_name"
  19. android:roundIcon="@mipmap/ic_launcher_round"
  20. android:supportsRtl="true"
  21. android:theme="@style/AppTheme">
  22. <activity android:name=".MainActivity">
  23. <intent-filter>
  24. <action android:name="android.intent.action.MAIN" />
  25.  
  26. <category android:name="android.intent.category.LAUNCHER" />
  27. </intent-filter>
  28. </activity>
  29. <activity
  30. android:name="com.mob.tools.MobUIShell"
  31. android:theme="@android:style/Theme.Translucent.NoTitleBar"
  32. android:configChanges="keyboardHidden|orientation|screenSize"
  33. android:windowSoftInputMode="stateHidden|adjustResize"/>
  34. <!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data -->
  35. <meta-data android:name="Mob-AppKey" android:value="23e5aca8caef0"/>
  36. <meta-data android:name="Mob-AppSecret" android:value="2ad1d3d6f87f696cd872d60f10966f31"/>
  37. </application>
  38.  
  39. </manifest>

5:activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="zhu.com.yzm4.MainActivity">
  8.  
  9. <Button
  10. android:text="注册"
  11. android:layout_width="310dp"
  12. android:layout_height="45dp"
  13. android:layout_marginTop="20dp"
  14. android:id="@+id/btn_register"
  15. android:background="@color/colorPrimary"
  16. android:textColor="@color/colorAccent"
  17. android:layout_below="@+id/edit_code"
  18. android:layout_centerHorizontal="true" />
  19. <!--自定义的下划线EditText-->
  20. <EditText
  21. android:layout_width="320dp"
  22. android:layout_height="40dp"
  23. android:inputType="textPersonName"
  24. android:hint="你的手机号"
  25. android:ems="10"
  26. android:id="@+id/edit_phone"
  27. android:layout_weight="1"
  28. android:layout_marginTop="96dp"
  29. android:layout_alignParentTop="true"
  30. android:layout_alignStart="@+id/edit_code" />
  31.  
  32. <EditText
  33. android:layout_width="210dp"
  34. android:layout_height="45dp"
  35. android:inputType="textPersonName"
  36. android:hint="请输入验证码"
  37. android:ems="10"
  38. android:layout_marginTop="41dp"
  39. android:id="@+id/edit_code"
  40. android:layout_below="@+id/edit_phone"
  41. android:layout_alignStart="@+id/btn_register" />
  42.  
  43. <Button
  44. android:text="获取验证码"
  45. android:layout_width="100dp"
  46. android:layout_height="40dp"
  47. android:id="@+id/btn_getcord"
  48. android:background="@color/colorPrimary"
  49. android:textColor="@color/colorAccent"
  50. android:layout_alignBaseline="@+id/edit_code"
  51. android:layout_alignBottom="@+id/edit_code"
  52. android:layout_alignEnd="@+id/edit_phone" />
  53.  
  54. </RelativeLayout>

6:MainActivity(再结合别人的源码)

  1. package zhu.com.yzm4;
  2.  
  3. import android.app.Activity;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.text.TextUtils;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.EditText;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14.  
  15. import cn.smssdk.EventHandler;
  16. import cn.smssdk.SMSSDK;
  17.  
  18. public class MainActivity extends Activity implements View.OnClickListener {
  19.  
  20. private EditText edit_phone;
  21. private EditText edit_cord;
  22. private TextView now;
  23. private Button btn_getCord;
  24. private Button btn_register;
  25. private String phone_number;
  26. private String cord_number;
  27. EventHandler eventHandler;
  28. private int time=60;
  29. private boolean flag=true;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_main);
  34. getId();
  35.  
  36. eventHandler = new EventHandler() {
  37. public void afterEvent(int event, int result, Object data) {
  38. Message msg=new Message();
  39. msg.arg1=event;
  40. msg.arg2=result;
  41. msg.obj=data;
  42. handler.sendMessage(msg);
  43. }
  44. };
  45.  
  46. SMSSDK.registerEventHandler(eventHandler);
  47. }
  48.  
  49. @Override
  50. protected void onDestroy() {
  51. super.onDestroy();
  52. SMSSDK.unregisterEventHandler(eventHandler);
  53. }
  54.  
  55. /**
  56. * 使用Handler来分发Message对象到主线程中,处理事件
  57. */
  58. Handler handler=new Handler()
  59. {
  60. @Override
  61. public void handleMessage(Message msg) {
  62. super.handleMessage(msg);
  63. int event=msg.arg1;
  64. int result=msg.arg2;
  65. Object data=msg.obj;
  66. if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
  67. if(result == SMSSDK.RESULT_COMPLETE) {
  68. boolean smart = (Boolean)data;
  69. if(smart) {
  70. Toast.makeText(getApplicationContext(),"该手机号已经注册过,请重新输入",
  71. Toast.LENGTH_LONG).show();
  72. edit_phone.requestFocus();
  73. return;
  74. }
  75. }
  76. }
  77. if(result==SMSSDK.RESULT_COMPLETE)
  78. {
  79.  
  80. if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
  81. Toast.makeText(getApplicationContext(), "验证码输入正确",
  82. Toast.LENGTH_LONG).show();
  83. }
  84. }
  85. else
  86. {
  87. if(flag)
  88. {
  89. btn_getCord.setVisibility(View.VISIBLE);
  90. Toast.makeText(getApplicationContext(),"验证码获取失败请重新获取", Toast.LENGTH_LONG).show();
  91. edit_phone.requestFocus();
  92. }
  93. else
  94. {
  95. Toast.makeText(getApplicationContext(),"验证码输入错误", Toast.LENGTH_LONG).show();
  96. }
  97. }
  98.  
  99. }
  100.  
  101. };
  102.  
  103. /**
  104. * 获取id
  105. */
  106. private void getId()
  107. {
  108. edit_phone=findViewById(R.id.edit_phone);
  109. edit_cord=findViewById(R.id.edit_code);
  110. btn_getCord=findViewById(R.id.btn_getcord);
  111. btn_register=findViewById(R.id.btn_register);
  112. btn_getCord.setOnClickListener(this);
  113. btn_register.setOnClickListener(this);
  114. }
  115.  
  116. /**
  117. * 按钮点击事件
  118. */
  119. public void onClick(View v)
  120. {
  121. switch (v.getId())
  122. {
  123. case R.id.btn_getcord:
  124. if(judPhone())//去掉左右空格获取字符串
  125. {
  126. SMSSDK.getVerificationCode("86",phone_number);
  127. edit_cord.requestFocus();
  128. }
  129. break;
  130. case R.id.btn_register:
  131. if(judCord())
  132. SMSSDK.submitVerificationCode("86",phone_number,cord_number);
  133. flag=false;
  134. break;
  135. default:
  136. break;
  137. }
  138. }
  139.  
  140. private boolean judPhone()
  141. {
  142. if(TextUtils.isEmpty(edit_phone.getText().toString().trim()))
  143. {
  144. Toast.makeText(MainActivity.this,"请输入您的电话号码",Toast.LENGTH_LONG).show();
  145. edit_phone.requestFocus();
  146. return false;
  147. }
  148. else if(edit_phone.getText().toString().trim().length()!=11)
  149. {
  150. Toast.makeText(MainActivity.this,"您的电话号码位数不正确",Toast.LENGTH_LONG).show();
  151. edit_phone.requestFocus();
  152. return false;
  153. }
  154. else
  155. {
  156. phone_number=edit_phone.getText().toString().trim();
  157. String num="[1][358]\\d{9}";
  158. if(phone_number.matches(num))
  159. return true;
  160. else
  161. {
  162. Toast.makeText(MainActivity.this,"请输入正确的手机号码",Toast.LENGTH_LONG).show();
  163. return false;
  164. }
  165. }
  166. }
  167.  
  168. private boolean judCord()
  169. {
  170. judPhone();
  171. if(TextUtils.isEmpty(edit_cord.getText().toString().trim()))
  172. {
  173. Toast.makeText(MainActivity.this,"请输入您的验证码",Toast.LENGTH_LONG).show();
  174. edit_cord.requestFocus();
  175. return false;
  176. }
  177. else if(edit_cord.getText().toString().trim().length()!=4)
  178. {
  179. Toast.makeText(MainActivity.this,"您的验证码位数不正确",Toast.LENGTH_LONG).show();
  180. edit_cord.requestFocus();
  181.  
  182. return false;
  183. }
  184. else
  185. {
  186. cord_number=edit_cord.getText().toString().trim();
  187. return true;
  188. }
  189.  
  190. }
  191.  
  192. }

   

                 源码下载

 

Android Studio使用Mob来获取手机验证码的源码的更多相关文章

  1. Android Studio使用Mob来获取手机验证码加上倒计时

    再根据上编的基础上再添加倒计时即可 添加一个类TimeCountUtil package zhu.com.yzm4; import android.os.CountDownTimer; import ...

  2. Android Studio 的蓝牙串口通信(附Demo源码下载)

    根据相关代码制作了一个开源依赖包,将以下所有的代码进行打包,直接调用即可完成所有的操作.详细说明地址如下,如果觉得有用可以GIthub点个Star支持一下: 项目官网 Kotlin版本说明文档 Jav ...

  3. Android Studio 一个完整的APP实例(附源码和数据库)

    前言: 这是我独立做的第一个APP,是一个记账本APP. This is the first APP, I've ever done on my own. It's a accountbook APP ...

  4. 微信小程序获取手机验证码

    一种比较常见的功能获取手机验证码 先看效果图: 其实这个功能实现起来很简单,主要就是调取第三方接口,拿到返回值验证的问题 直接上代码吧: wxml页面: <view class='changeI ...

  5. C#获取手机验证码+榛子云平台

    今天给大家推荐一个简单的获取手机验证码注册+获取随机4位数 测试框架:.net4.7以上 1.榛子云注册:http://smsow.zhenzikj.com/,送一条测试短信,最低充10元即刻使用 2 ...

  6. vue 项目,获取手机验证码和图形验证码(iviewUI框架)

    1.编辑获取验证码模块 <Form ref="phoneFormItem" :model="phoneFormItem" :label-width=&qu ...

  7. 实例源码--Android手机狗(防盗)源码

      下载源码   技术要点: 1. SharedPreferences数据保存 2. SIM卡状态监 听 3. 发短信.发邮 箱.获取通讯信息 4. 源码带详细的 中文注释 ...... 详细介绍: ...

  8. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  9. atitit 短信验证码的源码实现  .docx

    atitit 短信验证码的源码实现  .docx 参考 Atitit usrQBM1603短信验证码规范1 主要方法1 源码实现1 参考 Atitit usrQBM1603短信验证码规范 主要方法 L ...

随机推荐

  1. Linux下EPoll通信模型简析

    EPoll基于I/O的事件通知机制,由系统通知用户那些SOCKET触发了那些相关I/O事件.事件中包括相应的文件描写叙述符以及事件类型.这样应用程序能够针对事件以及事件的source做相应的处理(Ac ...

  2. POJ 3193 字符串排序+比较

    思路: 1. 先把那m个排个序 此后每回二分+strncmp一下就好了 strncmp是个好东西啊-- 2. hash判判 (注意 hash会有冲突--------.) //By SiriusRen ...

  3. 方便查看线程状况的jsp页面

    此方法来自深入理解java虚拟机一书,用作管理员页面,可以随时用浏览器查看线程堆栈 <%@ page language="java" import="java.ut ...

  4. javaScript call与apply学习笔记

    call和apply是借用他人的函数实现自己到功能,具体表现在改变this指向,借用他人方法 而不同的地方是call是把实参按照形参的个数传入,而apply传入的是一个数组(argument) 写一个 ...

  5. 学习《Python数据科学手册》高清中文PDF+高清英文PDF+代码

    如果有一定的数据分析与机器学习理论与实践基础,<Python数据科学手册>这本书是绝佳选择. 是对以数据深度需求为中心的科学.研究以及针对计算和统计方法的参考书.很友好实用,结构很清晰.但 ...

  6. CentOS7/RedHat7的Apache配置介绍

    这里我们介绍yum安装httpd yum install -y httpd ************* [root@100 ~]# systemctl restart httpd [root@100 ...

  7. mysql的my.cnf文件详解

    一.缘由 最近要接手数据库的维护工作,公司首选MySQL.对于MySQL的理解,我认为很多性能优化工作.主从主主复制都是在调整参数,来适应不同时期不同数量级的数据. 故,理解透彻my.cnf里的参数是 ...

  8. 洛谷 P2117 小Z的矩阵

    P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...

  9. QTP校验数据库中数据后台项目

    数据校验功能后台主要包含两个类:QTPCommonServlet.java和QTPCommonDao.java 当中QTPCommonServlet.java为: package com.runqia ...

  10. 黑马程序猿——JAVA面向对象的特性:封装,继承,多态

                                           - ----------android培训.java培训.java学习型技术博客.期待与您交流!------------  ...