1.java
把 MobCommons.jar Mob 通用公共庫 必須
MobTools.jar Mob 工具公共庫 必須android
SMSSDK-<version>.aar SMSSDK 核心 必須json
2.經過在app/build.gradle 文件的android節點下增長以下:app
repositories{ flatDir{ dirs 'libs' //就是你放aar的目錄地址 }
3.在app/build.gradle文件的依賴項下添加ide
dependencies { ....//你的其餘依賴 compile name:'SMSSDK-<version>',ext:'aar' // }
4.AndroidManifest 文件配置工具
<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" />
5. 初始化佈局
// 經過代碼註冊你的AppKey和AppSecret MobSDK.init(context, "你的AppKey", "你的AppSecret");
1)設置事件監聽gradle
eventHandler = 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; // msg.what = MobSDK_HANDLER; handler.sendMessage(msg); } @Override public void beforeEvent(int event, Object o) { Message msg = new Message(); msg.arg1 = event; msg.obj = data; handler.sendMessage(msg); } }; // 註冊回調監聽接口 SMSSDK.registerEventHandler(eventHandler);
2).事件,會被監聽到而實現上面的berfore和after方法。從而把參數給Message對象ui
onSendMessageHandler.onSendMessage("86",userPhone);
SMSSDK.getVerificationCode("86",userPhone,onSendMessageHandler); //對應事件--獲取驗證碼
SMSSDK.submitVerificationCode("86",login_input_phone_et.getText().toString().trim(), //驗證碼驗證事件
login_input_code_et.getText().toString().trim());
3.Handler對象接受Message,根據參數實現相關的操做。this
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (CODE_ING !=0 ){ login_request_code_btn.setText(CODE_ING + "s後重發"); }else{ login_request_code_btn.setText("從新發送"); login_request_code_btn.setClickable(true); } if (result == SMSSDK.RESULT_COMPLETE) { //驗證碼驗證成功 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { Toast.makeText(getApplicationContext(), "驗證成功", Toast.LENGTH_LONG).show(); SMSSDK.unregisterAllEventHandler(); Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //驗證碼已發送 Toast.makeText(getApplicationContext(), "驗證碼已經發送", Toast.LENGTH_SHORT).show(); } else { ((Throwable) data).printStackTrace(); } } } };
佈局代碼:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/login_input_phone_et" android:layout_width="280dp" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="107dp" android:ems="10" android:hint="請輸入手機號" android:inputType="phone" /> <requestFocus /> <EditText android:id="@+id/login_input_code_et" android:layout_width="170dp" android:layout_height="wrap_content" android:layout_alignLeft="@+id/login_input_phone_et" android:layout_below="@+id/login_input_phone_et" android:layout_marginTop="44dp" android:hint="請輸入驗證碼" android:inputType="textPassword" > </EditText> <Button android:id="@+id/login_request_code_btn" android:onClick="onClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/login_input_phone_et" android:layout_alignTop="@+id/login_input_code_et" android:text="獲取驗證碼" /> <Button android:id="@+id/login_commit_btn" android:onClick="register" android:layout_width="280dp" android:layout_height="wrap_content" android:layout_alignLeft="@+id/login_input_code_et" android:layout_below="@+id/login_input_code_et" android:layout_marginTop="44dp" android:text="註冊" /> </RelativeLayout>
login.java:
package com.jiangcun.activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.os.Bundle; import android.provider.DocumentsContract; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.view.ViewParent; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.jiangcun.cc.MainActivity; import com.jiangcun.cc.R; import com.mob.MobSDK; import org.json.JSONObject; import java.util.regex.Matcher; import java.util.regex.Pattern; import cn.smssdk.EventHandler; import cn.smssdk.OnSendMessageHandler; import cn.smssdk.SMSSDK; import static android.R.attr.data; import static android.R.attr.mapViewStyle; public class Login extends AppCompatActivity { EditText login_input_phone_et; EditText login_input_code_et; Button login_request_code_btn; Button login_commit_btn; static int CODE_ING; EventHandler eventHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initView(); initSDK(); login_commit_btn.setClickable(false); } void initView(){ login_input_phone_et =(EditText)findViewById(R.id.login_input_phone_et); login_input_code_et = (EditText)findViewById(R.id.login_input_code_et); login_request_code_btn = (Button)findViewById(R.id.login_request_code_btn); login_commit_btn = (Button)findViewById(R.id.login_commit_btn); } private void initSDK() { MobSDK.init(this, "1fcd98f3d4d5c", "f57e4faddbd6f3aae1911900483a2a03"); eventHandler = 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; // msg.what = MobSDK_HANDLER; handler.sendMessage(msg); } @Override public void beforeEvent(int event, Object o) { Message msg = new Message(); msg.arg1 = event; msg.obj = data; handler.sendMessage(msg); } }; // 註冊回調監聽接口 SMSSDK.registerEventHandler(eventHandler); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (CODE_ING !=0 ){ login_request_code_btn.setText(CODE_ING + "s後重發"); }else{ login_request_code_btn.setText("從新發送"); login_request_code_btn.setClickable(true); } if (result == SMSSDK.RESULT_COMPLETE) { //驗證碼驗證成功 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { Toast.makeText(getApplicationContext(), "驗證成功", Toast.LENGTH_LONG).show(); SMSSDK.unregisterAllEventHandler(); Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { //驗證碼已發送 Toast.makeText(getApplicationContext(), "驗證碼已經發送", Toast.LENGTH_SHORT).show(); } else { ((Throwable) data).printStackTrace(); } } } }; public void onClick(View view){ final String userPhone = login_input_phone_et.getText().toString().trim(); if (checkPhone(userPhone)!=true || userPhone.length()!=11){ Toast.makeText(getApplicationContext(),"請輸入正確的手機號碼",Toast.LENGTH_LONG).show(); }else{ final OnSendMessageHandler onSendMessageHandler = new OnSendMessageHandler() { @Override public boolean onSendMessage(String s, String s1) { if (s1 == null){ Toast.makeText(getApplicationContext(),"sdfds",Toast.LENGTH_LONG).show(); } return false; } }; onSendMessageHandler.onSendMessage("86",userPhone); SMSSDK.getVerificationCode("86",userPhone,onSendMessageHandler); login_commit_btn.setClickable(true); new Thread(new Runnable() { @Override public void run() { login_request_code_btn.setClickable(false); for (int i = 60; i >= 0; i--) { CODE_ING = i; handler.sendEmptyMessage(CODE_ING); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } public void register(View view){ if (login_input_code_et.getText().toString().trim() == ""){ Toast.makeText(getApplicationContext(),"請輸入驗證碼",Toast.LENGTH_LONG).show(); }else{ SMSSDK.submitVerificationCode("86",login_input_phone_et.getText().toString().trim(), login_input_code_et.getText().toString().trim()); } } public boolean checkPhone(String phoneNum){ Pattern pattern = Pattern.compile("1[1-9][0-9]{9}"); Matcher matcher = pattern.matcher(phoneNum); if (matcher.find()){ return true; } return false; } }