美文网首页Android知识Android开发
SMSSDK for Android 实现发送短信及解析

SMSSDK for Android 实现发送短信及解析

作者: 浪子_归心 | 来源:发表于2017-11-30 22:33 被阅读0次

    1. 配置完以后,在注册activity的onCreate()方法中先进行eventHandler的注册。

    个人理解,eventHandler就是对短信验证进行监听,在进行相应的操作后,实现相应的UI更新和回调操作。

    eventHandler中可以重写四个回调方法。

    其中onRegister在回调对象注册的时候被触发。beforeEvent在操作执行前被触发,其参数event表示操作的类型,data是从外部传入的数据。afterEvent在操作结束时被触发,同样具备event和data参数,但是data是事件操作结果,其具体取值根据参数result而定。

    一般情况是用afterEvent实现回调。

    result表示操作结果,会返回两种值:

    SMSSDK.RESULT_COMPLETE:表示操作成功。

    SMSSDK.RESULT_ERROR:表示操作失败。

    event表示操作类型,会返回两个值:

    EVENT_GET_VERIFICATION_CODE:表示发送成功。

    EVENT_SUBMIT_VERIFICATION_CODE:表示验证成功。(在开发平台 “短信设置” 里面设置取消智能验证,才会发送短信,否则不会发送短信)

    eventHandler=newEventHandler() {

    @Override

    public void  afterEvent(intevent,intresult, Object data) {

    /**

    * 短信验证后,返回主线程进行UI操作

    */

                    Message message =newMessage();

                    message.what=SMSSDK_TEST_RESPONSE;

                    message.arg1= event;

                    message.arg2= result;

                    message.obj= data;

                    handle.sendMessage(message);

        }

    };

    //注册eventHandler

    SMSSDK.registerEventHandler(eventHandler);

    2.发送短信:

    SMSSDK.getVerificationCode("86",etRegisterUserName

    .getText().toString());

    参数1: 区号,中国是“86”

    参数2:11位手机号。

    3.验证短信:

    SMSSDK.submitVerificationCode("86",mPhoneString,

    etIdentifyCode.getText().toString());

    参数1: 区号

    参数2: 手机号

    参数3: 验证码

    4.对于发送以后和验证后的响应操作

        1.由于UI操作要在主线程中进行,所以对于eventHandler在子线程中的afterEvent方法,应该使用Handler返回主线程进行相应的操作。

        2.在发送验证码后发送handler来让按钮变成记录秒数状态(即多少秒后可以重新发送),用线程实现

        3.秒数结束,还原按钮状态

        4.由于要和自己设计的服务器通信,所以在验证码验证成功后,向自己服务器发起请求,判断是否能够注册

    //用于更新UI的句柄

    privateHandlerhandle=newHandler(){

    @Override

    public voidhandleMessage(Message msg) {

    switch(msg.what){

    caseRESEND_MESSAGE_TIME_CHANGE_HANDLE:

    //更新短信多少秒后可以发送

    btnGetIdentifyCode.setText(messageSendTime+"s后可以重新发送");

    btnGetIdentifyCode.setBackground(getResources().getDrawable(R.color.darkgray));

    break;

    caseRESEND_MESSAGE_HANDLE:

    //按钮变为可点击

    btnGetIdentifyCode.setText("获取验证码");

    btnGetIdentifyCode.setClickable(true);

    btnGetIdentifyCode.setBackground(getResources().getDrawable(R.drawable.bt_register));

    messageSendTime=60;

    break;

    caseSMSSDK_TEST_RESPONSE:

    intevent = msg.arg1;

    intresult = msg.arg2;

    Object data = msg.obj;

    //如果发送成功

    if(result == SMSSDK.RESULT_COMPLETE){

    Log.d("test_message","3");

    //验证成功,向服务器发送请求验证是否已注册

    if(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){

    Log.d("test_message","4");

    OkHttpUtils

    .post()

    .url(NET_URL_HEADER+"UserServlet")

    .addParams("userName",mPhoneString)

    .addParams("password",etRegisterPassword.getText().toString())

    .addParams("age","0")

    .addParams("phoneNumber",mPhoneString)

    .addParams("method","addUser")

    .build()

    .execute(newStringCallback() {

    @Override

    public voidonError(Call call, Exception e,intid) {

    e.printStackTrace();

    Toast.makeText(RegisterActivity.this,"注册异常",Toast.LENGTH_LONG).show();

    }

    @Override

    public voidonResponse(String response,intid) {

    if("注册成功".equals(response)){

    //如果服务器验证成功,跳转到主界面

    Toast.makeText(RegisterActivity.this,"注册成功",

    Toast.LENGTH_SHORT).show();

    Intent intent =newIntent(RegisterActivity.this,MainActivity.class);

    Bundle bundle =newBundle();

    //传入用户名

    bundle.putString("userName",mPhoneString);

    startActivity(intent);

    finish();

    }else if("已经注册".equals(response)){

    //提示已经注册

    Toast.makeText(RegisterActivity.this,"注册失败,该手机号已经注册",

    Toast.LENGTH_SHORT).show();

    }else{

    Toast.makeText(RegisterActivity.this,"注册失败!",

    Toast.LENGTH_SHORT).show();

    }

    }

    });

    }else if(event == SMSSDK.EVENT_GET_VERIFICATION_CODE){

    //验证码已经从服务器发出

    Toast.makeText(RegisterActivity.this,"验证码已发出,请注意查收", Toast.LENGTH_SHORT).show();

    }else{

    //验证码输入错误

    Toast.makeText(RegisterActivity.this,"验证码输入错误!", Toast.LENGTH_SHORT).show();

    }

    }else{

    //发送失败

    Log.d("send_message","3");

    Toast.makeText(RegisterActivity.this,"短信发送失败!",Toast.LENGTH_SHORT).show();

    }

    break;

    default:

    break;

    }

    }

    };

    相关文章

      网友评论

        本文标题:SMSSDK for Android 实现发送短信及解析

        本文链接:https://www.haomeiwen.com/subject/kvvbbxtx.html