您的位置:首页 > 产品设计 > UI/UE

手机获取短信验证码——自定义UI界面

2016-09-11 21:22 176 查看
在上一篇博客中,简单实现了获取短信验证码的功能,那么在本文中,主要介绍短信SDK内置(无UI界面)的方法,对外的类主要有:SMSSDK和EventHandler先看一波xml
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/ed1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:hint="请输入手机号"/>
<Button
android:id="@+id/btn_get"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="获取验证码"/>
</LinearLayout>
<EditText
android:id="@+id/ed2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入验证码"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="注册"/>
</LinearLayout>
配置权限等等就不再贴了,首先得到用户输入的值:
public void getNum() {
phoneNumber = ed1.getText().toString().trim();
code = ed2.getText().toString().trim();
}
其次初始化接口:
<span style="font-size:14px;">public void regist() {
EventHandler eh = new EventHandler() {

@Override
public void afterEvent(int event, int result, Object data) {

if (result == SMSSDK.RESULT_COMPLETE) {
//回调完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
//提交验证码成功
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "您已验证成功,请您订餐", Toast.LENGTH_SHORT).show();
}
});
} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
//获取验证码成功
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "已发送验证码,请查收", Toast.LENGTH_SHORT).show();
}
});
} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
//返回支持发送验证码的国家列表
}
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "操作失败,请重新获取验证码", Toast.LENGTH_SHORT).show();
}
});
((Throwable) data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //注册短信回调
}</span>
设置点击事件,判断用户输入的值是否为空或有误
<span style="font-size:14px;">public void onClick(View view) {
getNum();
switch (view.getId()) {
case R.id.btn_get:
regist();//调用注册短信发送的回调接口
//判断是否为null或“”
if (TextUtils.isEmpty(phoneNumber)) {
Toast.makeText(MainActivity.this, "请输入合法的手机号", Toast.LENGTH_SHORT).show();
} else {
SMSSDK.getVerificationCode("86", phoneNumber);
}
break;
case R.id.btn_login:
regist();
if (TextUtils.isEmpty(phoneNumber) && TextUtils.isEmpty(code)) {
Toast.makeText(MainActivity.this, "请检验您输入的信息", Toast.LENGTH_SHORT).show();
} else {
SMSSDK.submitVerificationCode("86", phoneNumber, code);
}
break;
}
}</span>
getSupportedCountries()获取短信目前支持的国家列表,在监听中返回getVerificationCode(String country, String phone)
请求获取短信验证码,在监听中返回
submitVerificationCode(String country, String phone, String code)
提交短信验证码,在监听中返回
现在可以运行自己的代码了,撒花~

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  验证码 ui 短信 sms