第一步:
将3个jar和so文件拷贝到libs文件下
第二步:
为应用添加MOB短信SDK需要的权限
<!-- mob短信 需要的权限 --> <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.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />第三步:
初始化SDK
private void initSDK() { try { SMSSDK.initSDK(this, APPKEY, APPSECRET); final Handler handler = new Handler(this); EventHandler 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); // 注册短信回调 } catch (Exception e) { e.printStackTrace(); } }第四步
获取短信
SMSSDK.getVerificationCode("86", phonenumber);//获取短信
验证短信
SMSSDK.submitVerificationCode("86", phonenumber,number);//验证短信
第五步
处理回调
@Override public boolean handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (result == SMSSDK.RESULT_COMPLETE) { System.out.println("--------result"+event); //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //验证码成功验证 Toast.makeText(MyActivity.this, "验证码成功验证", Toast.LENGTH_SHORT).show(); }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功 Toast.makeText(MyActivity.this, "获取验证码成功", Toast.LENGTH_SHORT).show();getCheckCode=true;handler.sendEmptyMessageDelayed(BEGIN_TIME, 1000); }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ //返回支持发送验证码的国家列表 } }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(MyActivity.this, des, Toast.LENGTH_SHORT).show(); return false; } } catch (Exception e) { SMSLog.getInstance().w(e); } } return false; }
第六步
注销回调接口
protected void onDestroy() { // 销毁回调监听接口 SMSSDK.unregisterAllEventHandler(); super.onDestroy(); }注意事项
把smssdk_errors.xml导入到res下的values文件夹中
有可能回调中会有错误SDK会读取smssdk_errors.xml寻找对应的错误代码
完整代码
import android.app.Activity; import android.os.Bundle; import android.os.Message; import android.os.Handler; import android.os.Handler.Callback; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; import cn.smssdk.utils.SMSLog; import org.json.JSONObject; public class MyActivity extends Activity implements View.OnClickListener, Callback { private static String APPKEY = "你的APPKEY"; // 填写从短信SDK应用后台注册得到的APPSECRET private static String APPSECRET = "你的APPSECRET"; private EditText et_phonenumber; private EditText et_number; private Button bt_sendsms; private Button bt_postmessage; private String phonenumber; private int BEGIN_TIME=0; private boolean getCheckCode=false; private int time=60; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bt_sendsms = (Button) findViewById(R.id.bt_sendsms); bt_postmessage = (Button) findViewById(R.id.bt_postmessage); et_phonenumber = (EditText) findViewById(R.id.et_phonenumber); et_number = (EditText) findViewById(R.id.et_number); bt_sendsms.setOnClickListener(this); bt_postmessage.setOnClickListener(this); initSDK(); } private void initSDK() { try { SMSSDK.initSDK(this, APPKEY, APPSECRET); final Handler handler = new Handler(this); EventHandler 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); // 注册短信回调 } catch (Exception e) { e.printStackTrace(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_sendsms: phonenumber = et_phonenumber.getText().toString().trim(); if (!TextUtils.isEmpty(phonenumber)) { SMSSDK.getVerificationCode("86", phonenumber);//获取短信 Toast.makeText(MyActivity.this,"已经提交",Toast.LENGTH_LONG).show(); //SMSSDK.getVoiceVerifyCode("86", phonenumber); }else { Toast.makeText(MyActivity.this, "电话号码不能为空", Toast.LENGTH_LONG).show(); } break; case R.id.bt_postmessage: String number = et_number.getText().toString().trim(); if (!TextUtils.isEmpty(number)) { SMSSDK.submitVerificationCode("86", phonenumber,number);//验证短信 }else { Toast.makeText(MyActivity.this, "验证码不能为空", Toast.LENGTH_LONG).show(); return; } break; default: break; } } protected void onDestroy() { // 销毁回调监听接口 SMSSDK.unregisterAllEventHandler(); super.onDestroy(); } @Override public boolean handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (result == SMSSDK.RESULT_COMPLETE) { System.out.println("--------result"+event); //回调完成 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { //验证码成功验证 Toast.makeText(MyActivity.this, "验证码成功验证", Toast.LENGTH_SHORT).show(); }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功 Toast.makeText(MyActivity.this, "获取验证码成功", Toast.LENGTH_SHORT).show(); getCheckCode=true; handler.sendEmptyMessageDelayed(BEGIN_TIME, 1000); }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ //返回支持发送验证码的国家列表 } }else{ // ((Throwable) data).printStackTrace(); // Toast.makeText(MainActivity.this, "验证码错误", 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(MyActivity.this, des, Toast.LENGTH_SHORT).show(); return false; } } catch (Exception e) { SMSLog.getInstance().w(e); } } return false; } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == BEGIN_TIME) { bt_sendsms.setText((time--) + "s后再次获取"); handler.sendEmptyMessageDelayed(BEGIN_TIME, 1000); if (time == 0) { time = 60; bt_sendsms.setText("获取验证码"); handler.removeMessages(BEGIN_TIME); } } } }; }布局文件
<LinearLayout 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" android:orientation="vertical" android:weightSum="1"> <EditText android:id="@+id/et_phonenumber" android:layout_width="200dp" android:layout_height="30dp" android:textSize="14sp" android:hint="手机号码" android:layout_weight="0.06"/> <Button android:id="@+id/bt_sendsms" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送短信" /> <EditText android:id="@+id/et_number" android:layout_width="200dp" android:layout_height="30dp" android:textSize="14sp" android:hint="验证码" android:layout_weight="0.05"/> <Button android:id="@+id/bt_postmessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="验证信息" /> </LinearLayout>