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' ,本来以为成功来着,但是还是出错
![](https://images2017.cnblogs.com/blog/1019268/201801/1019268-20180124111455084-688132540.png)
(图⑥)
又上网查了一下 好像必须要有 apply plugin: 'com.android.application' ,那我之好把之前的加的给删掉
反正就是这个三个弄我好久好久。。。。
根据客服回答,我才弄懂,哦!原来这样的。。。。
![](https://images2017.cnblogs.com/blog/1019268/201801/1019268-20180124112515850-885479541.png)
(图⑦)
![](https://images2017.cnblogs.com/blog/1019268/201801/1019268-20180124112656412-686406549.png)
(图⑧)
好了,我的问题解决了
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:
在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; } } }