集成Mob第三方的短信验证码功能
2017-12-26 08:40
302 查看
本博客集成了第三方的短信验证码验证功能,说一下步骤吧
首先去官网注册一个账号,然后登陆,创建一个应用
Mob官网
刚开始创建的应用是没有短信验证的功能的,需要我们手动添加这个功能,看图,这里有个Appkey和App Secret一会要使用到的
箭头指向的地方需要自己点击+号,把短信验证的功能添加到你创建的应用,如果想添加其他的都可以添加,反正添加了也不会用。
添加成功之后点击左边的SMSSDK有个下拉框,里面有说明,短信设置之类的
功能添加完了之后集成了,去官网下载SDK
这里有个问题,就是现在这个官网从3.1.0版本开始,不再提供独立的Android Studio版本下载,推荐AS版开发者按照最新的maven集成方式进行在线下载安装。
意思就是使用Gradle方式集成,下载SDK的时候会有个提示的
没写明白,我也是问客服才明白,一个在Model的Gradle,一个在Project的Gradle
下面是Project的Gradle的配置
然后等graldle完就集成完毕了
下面就写了一个小例子,测试一下。上代码
然后点击验证,如果验证码正确就会跳转到新的页面
这样就算集成成功啦。忘了一件事,需要在清单文件配置一下,要不然报错
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jc.com.mobsdk">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<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:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity android:name=".HomeActivity"></activity>
</application>
</manifest>
首先去官网注册一个账号,然后登陆,创建一个应用
Mob官网
刚开始创建的应用是没有短信验证的功能的,需要我们手动添加这个功能,看图,这里有个Appkey和App Secret一会要使用到的
箭头指向的地方需要自己点击+号,把短信验证的功能添加到你创建的应用,如果想添加其他的都可以添加,反正添加了也不会用。
添加成功之后点击左边的SMSSDK有个下拉框,里面有说明,短信设置之类的
功能添加完了之后集成了,去官网下载SDK
这里有个问题,就是现在这个官网从3.1.0版本开始,不再提供独立的Android Studio版本下载,推荐AS版开发者按照最新的maven集成方式进行在线下载安装。
意思就是使用Gradle方式集成,下载SDK的时候会有个提示的
没写明白,我也是问客服才明白,一个在Model的Gradle,一个在Project的Gradle
下面是Project的Gradle的配置
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } repositories { maven { url "http://mvn.mob.com/android" } } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' classpath "com.mob.sdk:MobSDK:+" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }再然后就是Model的Gradle配置了
apply plugin: 'com.android.application' apply plugin: "com.mob.sdk" android { compileSdkVersion 26 defaultConfig { applicationId "jc.com.mobsdk" minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } MobSDK { //写你创建应用的appkey和appsecret appKey "233d09e62563c" appSecret "f79eed1d1ec1b5644464a2a998b482c1" SMSSDK {} } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' }
然后等graldle完就集成完毕了
下面就写了一个小例子,测试一下。上代码
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_alignParentStart="true" android:layout_toStartOf="@+id/button"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取验证码" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentEnd="true"/> <Button android:layout_width="wrap_content" 4000 android:layout_height="wrap_content" android:text="点击验证" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_alignStart="@+id/button"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_below="@+id/editText" android:layout_alignParentStart="true" android:layout_alignEnd="@+id/editText"/> </RelativeLayout>
package jc.com.mobsdk; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; import cn.smssdk.utils.SMSLog; import jc.com.mobsdk.R; public class MainActivity extends AppCompatActivity { private Button btn1, btn2; private EditText edt1, edt2; private String phone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.button); btn2 = (Button) findViewById(R.id.button2); edt1 = (EditText) findViewById(R.id.editText); edt2 = (EditText) findViewById(R.id.editText2); EventHandler eh = new EventHandler() { @Override public void afterEvent(int event, int result, Object data) { Message msg = new Message(); msg.arg1 = event; msg.arg2 = result; msg.obj = data; mHandler.sendMessage(msg); } }; SMSSDK.registerEventHandler(eh); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Toast.makeText(getApplicationContext(), "123", Toast.LENGTH_SHORT).show(); //SMSSDK.getVerificationCode("1", "4432487596"); SMSSDK.getVerificationCode("86", edt1.getText().toString()); phone = edt1.getText().toString(); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SMSSDK.submitVerificationCode("86", phone, edt2.getText().toString()); } }); } Handler mHandler = new Handler() { public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; Log.e("event", "event=" + event); if (result == SMSSDK.RESULT_COMPLETE) { System.out.println("--------result" + event); //短信注册成功后,返回MainActivity,然后提示新好友 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {//提交验证码成功 Toast.makeText(getApplicationContext(), "提交验证码成功", Toast.LENGTH_SHORT).show(); startActivity(new Intent(MainActivity.this, HomeActivity.class)); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //已经验证 Toast.makeText(getApplicationContext(), "验证码已经发送", Toast.LENGTH_SHORT).show(); } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) { //已经验证 Toast.makeText(getApplicationContext(), "获取国家列表成功", Toast.LENGTH_SHORT).show(); // textV.setText(data.toString()); } } else { // ((Throwable) data).printStackTrace(); // Toast.makeText(MainActivity.this, "验证码错误", Toast.LENGTH_SHORT).show(); // Toast.makeText(MainActivity.this, "123", Toast.LENGTH_SHORT).show(); int status = 0; try { ((Throwable) data).printStackTrace(); Throwable throwable = (Throwable) data; JSONObject object = new JSONObject(throwable.getMessage()); String des = object.optString("detail"); status = object.optInt("status"); if (!TextUtils.isEmpty(des)) { Toast.makeText(MainActivity.this, des, Toast.LENGTH_SHORT).show(); return; } } catch (Exception e) { SMSLog.getInstance().w(e); } } } }; //将资源的图片保存到本地图片 public static void savePic(Context context) { File pic = new File("/sdcard/logo_bluetooth.png"); if (!pic.exists()) { try { //把资源文件转成bitmap Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); //再转成字节数组 ByteArrayOutputStream out = new ByteArrayOutputStream(); int i = 100; bitmap.compress(Bitmap.CompressFormat.PNG, i, out); byte[] array = out.toByteArray(); //最后通过流在保存 FileOutputStream fos = new FileOutputStream(pic); fos.write(array); fos.close(); } catch (FileNotFoundException e) { // TODO: handle exception e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterAllEventHandler(); } ; }效果如下
然后点击验证,如果验证码正确就会跳转到新的页面
这样就算集成成功啦。忘了一件事,需要在清单文件配置一下,要不然报错
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jc.com.mobsdk">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<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:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity android:name=".HomeActivity"></activity>
</application>
</manifest>
相关文章推荐
- Android开发工程中集成mob短信验证码功能的方法
- 安卓短信验证功能-----快速集成Mob之SecurityCodeSDK
- android_app开发集成mob短信验证码功能
- Android开发:app工程集成mob短信验证码功能
- mob短信验证码功能集成 ------未上线
- Android开发工程中集成mob短信验证码功能的方法
- Android实战简易教程<三十九>(第三方短信验证平台Mob和验证码自动填入功能结合实例)
- Android最快捷集成Sharesdk短信验证码功能(干货)
- Mob第三方短信验证非常簡單
- 使用mob为Android应用增加短信验证功能
- 快速集成APP注册页面免费获取短信验证码功能
- Android之Mob第三方短信验证服务
- 快速集成Mob短信验证(附源码)
- Android集成获取短信验证码功能
- 集成第三方sdk验证短信校验
- MOB短信验证快速集成3.0.0及以上
- android集成短信验证功能(Eclipse下)
- 用MOB实例开发实现短信验证功能