Android 集成第三方Mob发送短信

  • Post author:
  • Post category:其他


首先进入Mob的官方网址


http://www.mob.com/


如果没有注册过则先注册然后登录

现在就进入了首页,点击进入后台

在这里插入图片描述
选择添加一个自己的应用:

在这里插入图片描述
然后获取AppKey,APP Secret

在这里插入图片描述
到现在,应用就创建完成了,也能够获取自己的Appkey和AppSecret,这些都会在后面的配置中使用到

现在在自己的项目的build文件中添加

在dependencies里添加

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

然后在自己当前的module的build中添加

在最上面添加

apply plugin: 'com.mob.sdk'

在Android中添加

MobSDK {
        appKey "自己刚才创建应用完成后的appkey"
        appSecret "自己刚才创建应用完成后的appsecret"
        SMSSDK {}
    }

然后在自己的appliaction文件中初始化

在oncreate方法中添加

MobSDK.init(this);

不要忘了在清单文件中添加上

本人亲测 无界面的短信验证:

package com.example.ap5;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
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 cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText phone;
    private EditText pwd;
    private Button test;
    private Button send;
    EventHandler eventHandler = new EventHandler() {
        public void afterEvent(int event, int result, Object data) {
            // afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
            Message msg = new Message();
            msg.arg1 = event;
            msg.arg2 = result;
            msg.obj = data;
            new Handler(Looper.getMainLooper(), new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    int event = msg.arg1;
                    int result = msg.arg2;
                    Object data = msg.obj;
                    if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        if (result == SMSSDK.RESULT_COMPLETE) {
                            // TODO 处理成功得到验证码的结果
                            // 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
                        } else {
                            // TODO 处理错误的结果
                            ((Throwable) data).printStackTrace();
                        }
                    } else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        if (result == SMSSDK.RESULT_COMPLETE) {
                            // TODO 处理验证码验证通过的结果
                            Toast.makeText(MainActivity.this, "123", Toast.LENGTH_SHORT).show();
                        } else {
                            // TODO 处理错误的结果
                            Toast.makeText(MainActivity.this, "234", Toast.LENGTH_SHORT).show();
                            ((Throwable) data).printStackTrace();
                        }
                    }
                    // TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
                    return false;
                }
            }).sendMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        // 在尝试读取通信录时以弹窗提示用户(可选功能)
        SMSSDK.setAskPermisionOnReadContact(false);

        // 注册一个事件回调,用于处理SMSSDK接口请求的结果
        SMSSDK.registerEventHandler(eventHandler);
    }

    // 使用完EventHandler需注销,否则可能出现内存泄漏
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eventHandler);
    }

    private void initView() {
        phone = (EditText) findViewById(R.id.phone);
        pwd = (EditText) findViewById(R.id.pwd);
        test = (Button) findViewById(R.id.test);
        send=findViewById(R.id.send);
        send.setOnClickListener(this);
        test.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.test:
                // 提交验证码,其中的code表示验证码,如“1357”
                SMSSDK.submitVerificationCode("86", phone.getText().toString().trim(), pwd.getText().toString().trim());
                break;
            case R.id.send:
                // 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
                SMSSDK.getVerificationCode("86", phone.getText().toString().trim());
                break;
        }
    }

}



版权声明:本文为weixin_43747497原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。