300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 解决mob网站短信验证SDK更新后 android studio下的mob短信验证接入问题

解决mob网站短信验证SDK更新后 android studio下的mob短信验证接入问题

时间:2019-12-25 05:47:39

相关推荐

解决mob网站短信验证SDK更新后 android studio下的mob短信验证接入问题

对于android开发来说,遇到需要短信注册验证的问题是很常见的,今天我们就来聊一聊在android studio上SMSSDK的接入。废话不多说:具体步骤如下:

(1)打开我们的mob官网:/ 注册自己的账号

(2)进入我们的后台:我们会看见如下图片:

我们点击添加应用,创建我们自己的应用如我的应用叫做Sendmessage,名字啥的就看个人喜好了,创建好应用以后会给我们的应用一个appkey和一个app secret,图片如下:

(3)此时并还没有集成进入SMSDK,我们看网站的左侧点击SMSSDK点击加入以后如图所示:

(4)由于mob网站更新的缘故,已经不再单独提供针对android studio的sdk,我们在网站上只能下载到针对elcipise版的sdk,所以我们这里采用maven的集成方式;具体步骤如下:①打开我们的as在我们工程下点开根模块下的build.gradle:

加入如下代码:

buildscript {

// 添加MobSDK的maven地址

repositories {

maven {

url "/android"

}

}

dependencies {

// 注册MobSDK

classpath 'com.mob.sdk:MobSDK:+'

}

}

加入后如图:

②点开我们的应用下的build.gradle加入如下代码:

代码如下:

apply plugin: 'com.mob.sdk'

// 在MobSDK的扩展中注册SMSSDK的相关信息

MobSDK {

appKey "d580ad56b4b5"

appSecret "7fcae59a62342e7e2759e9e397c82bdd"

SMSSDK {}

}

加入后如图:

这里的appkey和appSecret要用自己申请到的。

③接下来在配置文件中添加权限:

<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" />

④至此在androidstudio下的集成已经全部完成。

(5)在这里贴出我自己的代码供大家参考:

前台界面:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="50dp"android:gravity="center"tools:context="com.example.wenhaibo.sendmessage.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="70dp"android:layout_height="wrap_content"android:text="手机号:"android:textSize="20dp"android:layout_weight="0"/><EditTextandroid:inputType="phone"android:id="@+id/et_phonenum"android:layout_weight="1"android:layout_width="0dp"android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/et_checkecode"android:layout_weight="1"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="验证码" /><Buttonandroid:background="@color/colorPrimary"android:id="@+id/btn_check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="获取验证码" /></LinearLayout><Buttonandroid:background="@color/colorAccent"android:enabled="false"android:id="@+id/btn_sure"android:layout_marginTop="20dp"android:textColor="#131313"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录" /></LinearLayout>

后台代码:

package com.example.wenhaibo.sendmessage;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.mob.MobSDK;import java.util.Timer;import java.util.TimerTask;import java.util.regex.Matcher;import java.util.regex.Pattern;import cn.smssdk.EventHandler;import cn.smssdk.SMSSDK;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private TimerTask tt;private Timer tm;private EditText et_phonenum;private Button btn_check;private EditText et_checkecode;private Button btn_sure;private int TIME = 60;//倒计时60s这里应该多设置些因为mob后台需要60s,我们前端会有差异的建议设置90,100或者120public String country="86";//这是中国区号,如果需要其他国家列表,可以使用getSupportedCountries();获得国家区号private String phone;private static final int CODE_REPEAT = 1; //重新发送@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MobSDK.init(this, "24793dde94dc6", "6e636da9b16e5bf8d5fae19ca30ea6ac");SMSSDK.registerEventHandler(eh); //注册短信回调(记得销毁,避免泄露内存)initView();}Handler hd = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == CODE_REPEAT) {btn_check.setEnabled(true);btn_sure.setEnabled(true);tm.cancel();//取消任务tt.cancel();//取消任务TIME = 60;//时间重置btn_check.setText("重新发送验证码");}else {btn_check.setText(TIME + "重新发送验证码");}}};//回调EventHandler eh=new EventHandler(){@Overridepublic void afterEvent(int event, int result, Object data) {if (result == SMSSDK.RESULT_COMPLETE) {if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {toast("验证成功");}else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功toast("获取验证码成功");}else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){//如果你调用了获取国家区号类表会在这里回调//返回支持发送验证码的国家列表}}else{//错误等在这里(包括验证失败)//错误码请参照/android-api-错误码参考/这里我就不再继续写了((Throwable)data).printStackTrace();String str = data.toString();toast(str);}}};//吐司的一个小方法private void toast(final String str) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();}});}private void initView() {et_phonenum = (EditText) findViewById(R.id.et_phonenum);btn_check = (Button) findViewById(R.id.btn_check);et_checkecode = (EditText) findViewById(R.id.et_checkecode);btn_sure = (Button) findViewById(R.id.btn_sure);btn_check.setOnClickListener(this);btn_sure.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_check:phone = et_phonenum.getText().toString().trim().replaceAll("/s","");if (!TextUtils.isEmpty(phone)) {//定义需要匹配的正则表达式的规则String REGEX_MOBILE_SIMPLE = "[1][358]\\d{9}";//把正则表达式的规则编译成模板Pattern pattern = pile(REGEX_MOBILE_SIMPLE);//把需要匹配的字符给模板匹配,获得匹配器Matcher matcher = pattern.matcher(phone);// 通过匹配器查找是否有该字符,不可重复调用重复调用matcher.find()if (matcher.find()) {//匹配手机号是否存在alterWarning();} else {toast("手机号格式错误");}} else {toast("请先输入手机号");}break;case R.id.btn_sure://获得用户输入的验证码String code = et_checkecode.getText().toString().replaceAll("/s","");if (!TextUtils.isEmpty(code)) {//判断验证码是否为空//验证SMSSDK.submitVerificationCode( country, phone, code);}else{//如果用户输入的内容为空,提醒用户toast("请输入验证码后再提交");}break;}}//弹窗确认下发private void alterWarning() {//构造器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("提示"); //设置标题builder.setMessage("我们将要发送到" + phone + "验证"); //设置内容builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss(); //关闭dialog//通过sdk发送短信验证(请求获取短信验证码,在监听(eh)中返回)SMSSDK.getVerificationCode(country, phone);//做倒计时操作Toast.makeText(MainActivity.this, "已发送" + which, Toast.LENGTH_SHORT).show();btn_check.setEnabled(false);btn_sure.setEnabled(true);tm = new Timer();tt = new TimerTask() {@Overridepublic void run() {hd.sendEmptyMessage(TIME--);}};tm.schedule(tt,0,1000);}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();Toast.makeText(MainActivity.this, "已取消" + which, Toast.LENGTH_SHORT).show();}});//参数都设置完成了,创建并显示出来builder.create().show();}//销毁短信注册@Overrideprotected void onDestroy() {super.onDestroy();// 注销回调接口registerEventHandler必须和unregisterEventHandler配套使用,否则可能造成内存泄漏。SMSSDK.unregisterEventHandler(eh);}}

(6)大家可以跑到自己的手机上看看,欢迎大家前来交流。(7)demo工程下载链接:链接:/s/1qLcyeGgTwLuM0O5CqQJLJQ 密码:85za

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。