android app --- 快速集成SharaSDK ,SMS实现短信验证(一)2.0版之前


官方刚刚推出了  SMS For Android v2.0.1  

上网址:http://www.mob.com/#/index


2.0.1版本的推出,最大的亮点在于提供了对android  studio 的支持,之前的版本都是eclipse的,用在AS上,AS增加依赖库是个让人很头疼的事情。


集成依赖库让人头疼,但总有大神有解决方案,下面就简单介绍一下AS下不用依赖库,不用2.0.1之后推出的对AS的支持,也能快速集成短信验证的方法。(本方法非原创,由SharaSDK 官方论坛某个大神帖子中看到,如有不妥之处,请联系博主删除)

我们下载的官方SDK,里面大多包含.jar 架包 ,和各种.so  文件,重点就在这里。

1.复制.jar文件到  AS的lib目录下,复制.so文件,到java文件同级目录下。(.so文件记得要创建一个jniLibs文件夹)



轻松两步,就集成了SharaSDK的短信验证,比集成支持库要方便很多倍。


下面开始贴一些配置和代码逻辑

//发验证权限
<!--  <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.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这些是获取短信的权限,可以看到把第一个权限禁止掉了,第一个权限是获取联系人的权限,发短信验证,不需要这个权限。(因为他在老是提示正在获取联系人信息)


上代码:

在使用的类里面先初始化下。

SMSSDK.initSDK(ZhuceActivity.this, "c6670846d84e", "393243ef580bc4fd8b539a334fd488e6");
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;
        handler.sendMessage(msg);
    }
};
SMSSDK.registerEventHandler(eh);

getname = nameEdit.getText().toString().trim();
// 1. 通过规则判断手机号
if (!judgePhoneNums(getname)) {
    return;
}
SMSSDK.getVerificationCode("86", getname);
btn_getSMS.setClickable(false);
btn_getSMS.setText("再次输入倒计时" + "(" + i + ")");
new Thread(new Runnable() {
    @Override
    public void run() {
        for (; i > 0; i--) {
            handler.sendEmptyMessage(-9);
            if (i <= 0) {
                break;
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        handler.sendEmptyMessage(-8);
    }
}).start();

这段代码用来获取验证码,可以放在一个点击事件中。

Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        if (msg.what == -9) {
            btn_getSMS.setText("重新发送(" + i + ")");
        } else if (msg.what == -8) {
            btn_getSMS.setText("获取验证中");
            btn_getSMS.setClickable(true);
            i = 30;
        } else {
            int event = msg.arg1;
            int result = msg.arg2;
            Object data = msg.obj;
            System.out.println("result:" + result + ",,event:" + event);
            if (result == SMSSDK.RESULT_COMPLETE) {
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    Toast.makeText(ZhuceActivity.this, "验证成功",
                            Toast.LENGTH_SHORT).show();
                    Log.e("LOG", "验证成功-----------------------");
                    //这里写验证成功后程序的流程,一般在这里要调用注册或者登陆接口
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    Toast.makeText(ZhuceActivity.this, "验证已发送",
                            Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(ZhuceActivity.this, "验证错误",
                            Toast.LENGTH_SHORT).show();
                    ((Throwable) data).printStackTrace();
                }
            } else {
                Toast.makeText(ZhuceActivity.this, "验证失败",
                        Toast.LENGTH_SHORT).show();
            }
        }
    }
};

在提交验证码的时候(第二个参数为手机号,第三个参数为你收到验证码)

SMSSDK.submitVerificationCode("86", getname, verification_code);

这步之后,进入上面的handler中,提交验证码验证正确与否。


到此,整个的短信集成和验证流程就结束了。


如有不明确的地方,可以回复,荣幸与各位开发者公共探讨。


原创文章,转载请注明出处:
http://blog.youkuaiyun.com/qq_33078541?viewmode=contents

随后看下2.0.1官方出的AS集成方式,看文档写的貌似更简单了,复制四个就可以了。
http://wiki.sharesdk.cn/android-%E7%9F%AD%E4%BF%A1sdk%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3/
有兴趣可以看下,不知道好使不。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值