Android Studio使用Mob来获取手机验证码的源码
本文来自: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'
这个两个会产生冲突, 那感情好我直接删掉 apply plugin: 'com.android.application' ,本来以为成功来着,但是还是出错
(图⑥)
又上网查了一下 好像必须要有 apply plugin: 'com.android.application' ,那我之好把之前的加的给删掉
反正就是这个三个弄我好久好久。。。。
根据客服回答,我才弄懂,哦!原来这样的。。。。
(图⑦)
(图⑧)
好了,我的问题解决了
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的代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zhu.com.yzm4">
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:name="com.mob.MobApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/>
<!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data -->
<meta-data android:name="Mob-AppKey" android:value="23e5aca8caef0"/>
<meta-data android:name="Mob-AppSecret" android:value="2ad1d3d6f87f696cd872d60f10966f31"/>
</application> </manifest>
5:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="zhu.com.yzm4.MainActivity"> <Button
android:text="注册"
android:layout_width="310dp"
android:layout_height="45dp"
android:layout_marginTop="20dp"
android:id="@+id/btn_register"
android:background="@color/colorPrimary"
android:textColor="@color/colorAccent"
android:layout_below="@+id/edit_code"
android:layout_centerHorizontal="true" />
<!--自定义的下划线EditText-->
<EditText
android:layout_width="320dp"
android:layout_height="40dp"
android:inputType="textPersonName"
android:hint="你的手机号"
android:ems="10"
android:id="@+id/edit_phone"
android:layout_weight="1"
android:layout_marginTop="96dp"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/edit_code" /> <EditText
android:layout_width="210dp"
android:layout_height="45dp"
android:inputType="textPersonName"
android:hint="请输入验证码"
android:ems="10"
android:layout_marginTop="41dp"
android:id="@+id/edit_code"
android:layout_below="@+id/edit_phone"
android:layout_alignStart="@+id/btn_register" /> <Button
android:text="获取验证码"
android:layout_width="100dp"
android:layout_height="40dp"
android:id="@+id/btn_getcord"
android:background="@color/colorPrimary"
android:textColor="@color/colorAccent"
android:layout_alignBaseline="@+id/edit_code"
android:layout_alignBottom="@+id/edit_code"
android:layout_alignEnd="@+id/edit_phone" /> </RelativeLayout>
6:MainActivity(再结合别人的源码)
package zhu.com.yzm4; import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK; public class MainActivity extends Activity implements View.OnClickListener { private EditText edit_phone;
private EditText edit_cord;
private TextView now;
private Button btn_getCord;
private Button btn_register;
private String phone_number;
private String cord_number;
EventHandler eventHandler;
private int time=60;
private boolean flag=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getId(); eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
Message msg=new Message();
msg.arg1=event;
msg.arg2=result;
msg.obj=data;
handler.sendMessage(msg);
}
}; SMSSDK.registerEventHandler(eventHandler);
} @Override
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
} /**
* 使用Handler来分发Message对象到主线程中,处理事件
*/
Handler handler=new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int event=msg.arg1;
int result=msg.arg2;
Object data=msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if(result == SMSSDK.RESULT_COMPLETE) {
boolean smart = (Boolean)data;
if(smart) {
Toast.makeText(getApplicationContext(),"该手机号已经注册过,请重新输入",
Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return;
}
}
}
if(result==SMSSDK.RESULT_COMPLETE)
{ if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
Toast.makeText(getApplicationContext(), "验证码输入正确",
Toast.LENGTH_LONG).show();
}
}
else
{
if(flag)
{
btn_getCord.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(),"验证码获取失败请重新获取", Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
}
else
{
Toast.makeText(getApplicationContext(),"验证码输入错误", Toast.LENGTH_LONG).show();
}
} } }; /**
* 获取id
*/
private void getId()
{
edit_phone=findViewById(R.id.edit_phone);
edit_cord=findViewById(R.id.edit_code);
btn_getCord=findViewById(R.id.btn_getcord);
btn_register=findViewById(R.id.btn_register);
btn_getCord.setOnClickListener(this);
btn_register.setOnClickListener(this);
} /**
* 按钮点击事件
*/
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_getcord:
if(judPhone())//去掉左右空格获取字符串
{
SMSSDK.getVerificationCode("86",phone_number);
edit_cord.requestFocus();
}
break;
case R.id.btn_register:
if(judCord())
SMSSDK.submitVerificationCode("86",phone_number,cord_number);
flag=false;
break;
default:
break;
}
} private boolean judPhone()
{
if(TextUtils.isEmpty(edit_phone.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的电话号码",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else if(edit_phone.getText().toString().trim().length()!=11)
{
Toast.makeText(MainActivity.this,"您的电话号码位数不正确",Toast.LENGTH_LONG).show();
edit_phone.requestFocus();
return false;
}
else
{
phone_number=edit_phone.getText().toString().trim();
String num="[1][358]\\d{9}";
if(phone_number.matches(num))
return true;
else
{
Toast.makeText(MainActivity.this,"请输入正确的手机号码",Toast.LENGTH_LONG).show();
return false;
}
}
} private boolean judCord()
{
judPhone();
if(TextUtils.isEmpty(edit_cord.getText().toString().trim()))
{
Toast.makeText(MainActivity.this,"请输入您的验证码",Toast.LENGTH_LONG).show();
edit_cord.requestFocus();
return false;
}
else if(edit_cord.getText().toString().trim().length()!=4)
{
Toast.makeText(MainActivity.this,"您的验证码位数不正确",Toast.LENGTH_LONG).show();
edit_cord.requestFocus(); return false;
}
else
{
cord_number=edit_cord.getText().toString().trim();
return true;
} } }

Android Studio使用Mob来获取手机验证码的源码的更多相关文章
- Android Studio使用Mob来获取手机验证码加上倒计时
再根据上编的基础上再添加倒计时即可 添加一个类TimeCountUtil package zhu.com.yzm4; import android.os.CountDownTimer; import ...
- Android Studio 的蓝牙串口通信(附Demo源码下载)
根据相关代码制作了一个开源依赖包,将以下所有的代码进行打包,直接调用即可完成所有的操作.详细说明地址如下,如果觉得有用可以GIthub点个Star支持一下: 项目官网 Kotlin版本说明文档 Jav ...
- Android Studio 一个完整的APP实例(附源码和数据库)
前言: 这是我独立做的第一个APP,是一个记账本APP. This is the first APP, I've ever done on my own. It's a accountbook APP ...
- 微信小程序获取手机验证码
一种比较常见的功能获取手机验证码 先看效果图: 其实这个功能实现起来很简单,主要就是调取第三方接口,拿到返回值验证的问题 直接上代码吧: wxml页面: <view class='changeI ...
- C#获取手机验证码+榛子云平台
今天给大家推荐一个简单的获取手机验证码注册+获取随机4位数 测试框架:.net4.7以上 1.榛子云注册:http://smsow.zhenzikj.com/,送一条测试短信,最低充10元即刻使用 2 ...
- vue 项目,获取手机验证码和图形验证码(iviewUI框架)
1.编辑获取验证码模块 <Form ref="phoneFormItem" :model="phoneFormItem" :label-width=&qu ...
- 实例源码--Android手机狗(防盗)源码
下载源码 技术要点: 1. SharedPreferences数据保存 2. SIM卡状态监 听 3. 发短信.发邮 箱.获取通讯信息 4. 源码带详细的 中文注释 ...... 详细介绍: ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- atitit 短信验证码的源码实现 .docx
atitit 短信验证码的源码实现 .docx 参考 Atitit usrQBM1603短信验证码规范1 主要方法1 源码实现1 参考 Atitit usrQBM1603短信验证码规范 主要方法 L ...
随机推荐
- windows下用ADT进行android NDK开发的具体教程(从环境搭建、配置到编译全过程)
郑重申明:如需转载本博客,请注明出处,谢谢! 这几天在学习android NDK的开发.那么首先让我们来看看android NDK开发的本质是什么. NDK(Native Development Ki ...
- 从Linux系统内存逐步认识Android应用内存
总述 Android应用程序被限制了内存使用上限,一般为16M或24M(具体看系统设置),当应用的使用内存超过这个上限时,就会被系统认为内存泄漏,被kill掉.所以在Android开发时,管理好内存的 ...
- orm 通用方法——QueryModelById 主键查询
方法定义: /** * 描述:根据主键查询 * 作者:Tianqi * 日期:2014-09-15 * param:model 对象实例,包含主键 * return:对象 * */ func Quer ...
- SQL调用Webservices
IF NOT object_id('proc_CallWebServices') IS NULL DROP PROCEDURE proc_CallWebServices GO CREATE PROCE ...
- hbase启动报错:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
输入HBASE_MASTER_OPTS只是为了快速寻找这个选项而已,如果你手工找也可以 刚才那个命令回车后直接跳到这 前面加#就好了 修改后保存.重新启动hbase就好了. 注意:各个节点都要修改哦. ...
- 【基础篇】DatePickerDialog日期控件的基本使用(二) ——分别获取年、月、日、时、分
项目步骤: 1.在Main.xml布局文件中定义对应的组件,Main.xml内容如下: <?xml version="1.0" encoding="utf-8&qu ...
- 进阶《Python高性能编程》中文PDF+英文PDF+源代码
入门使用高性能 Python,建议参考<Python高性能编程>,例子给的很多,讲到高性能就会提到性能监控,里面有cpu mem 方法的度量,网络讲了一点异步,net profiler 没 ...
- 零基础学python-7.6 字符串格式化表达式
字符串格式化同意在一个单个的步骤中对一个字符串运行多个特定类型的替换 特别是给用户提示的时候,格式化很方便 实现方法: 1.格式化表达式,类似于c语音的printf 在表达式中,我们使用%二进制操作符 ...
- Selenium_WebDriver操作iFrame日历框和复选框_Java
iFrame日历框 页面上遇到iFrame元素时,先用findElement找到这个iFrame元素,然后再WebDriver.switchTo().frame(calFrame).在iFrame里操 ...
- 手动连接数据库(jdbc)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...


