Android实现获取短信验证码的功能以及自定义GUI短信验证文档格式.docx
《Android实现获取短信验证码的功能以及自定义GUI短信验证文档格式.docx》由会员分享,可在线阅读,更多相关《Android实现获取短信验证码的功能以及自定义GUI短信验证文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
compile'
com.android.support:
appcompat-v7:
21.0.3'
compilename:
'
SMSSDK-2.0.2'
ext:
aar'
SMSSDKGUI-2.0.2'
2、配置AndroidManifest.xml
打开您项目的“AndroidManifest.xml”,在其中添加如下的权限:
<
uses-permissionandroid:
name="
android.permission.READ_CONTACTS"
/>
android.permission.READ_PHONE_STATE"
android.permission.WRITE_EXTERNAL_STORAGE"
android.permission.ACCESS_NETWORK_STATE"
android.permission.ACCESS_WIFI_STATE"
android.permission.INTERNET"
android.permission.RECEIVE_SMS"
android.permission.GET_TASKS"
android.permission.ACCESS_FINE_LOCATION"
如果使用自带的GUI,需要再“application”下添加如下activity:
activity
android:
com.mob.tools.MobUIShell"
theme="
@android:
style/Theme.Translucent.NoTitleBar"
configChanges="
keyboardHidden|orientation|screenSize"
windowSoftInputMode="
stateHidden|adjustResize"
/>
3、添加代码
启动SDK
在您的项目启动时,调用下面的代码:
SMSSDK.initSDK(this,"
您的appkey"
"
您的appsecret"
);
发送短信验证码
短信SDK内置了开源的GUI功能,您可以通过调用下面的代码打开短信验证页面:
//打开注册页面
RegisterPageregisterPage=newRegisterPage();
registerPage.setRegisterCallback(newEventHandler(){
publicvoidafterEvent(intevent,intresult,Objectdata){
//解析注册结果
if(result==SMSSDK.RESULT_COMPLETE){
@SuppressWarnings("
unchecked"
HashMap<
String,Object>
phoneMap=(HashMap<
String,Object>
)data;
Stringcountry=(String)phoneMap.get("
country"
Stringphone=(String)phoneMap.get("
phone"
//提交用户信息
registerUser(country,phone);
});
registerPage.show(context);
privatevoidregisterUser(Stringcountry,Stringphone){
Randomrnd=newRandom();
intid=Math.abs(rnd.nextInt());
Stringuid=String.valueOf(id);
StringnickName="
SmsSDK_User_"
+uid;
Stringavatar=AVATARS[id%12];
SMSSDK.submitUserInfo(uid,nickName,avatar,country,phone);
其中的AVATARS就是一个字符串数组,里面是头像的网络链接而已,这些在下载的SDKDEMO中可查看。
4、下面看看如何自定义GUI短信验证而不是调用系统的
设计我们的布局文件:
RelativeLayoutxmlns:
android="
xmlns:
tools="
android:
layout_width="
match_parent"
layout_height="
tools:
context="
.MainActivity"
>
<
TextView
id="
@+id/textView2"
wrap_content"
layout_centerHorizontal="
true"
layout_marginTop="
20dp"
text="
短信验证"
textColor="
#00ffaa"
textSize="
@+id/textView1"
layout_alignParentLeft="
layout_below="
layout_marginLeft="
手机号:
"
EditText
@+id/phone"
layout_alignBaseline="
layout_alignBottom="
layout_toRightOf="
maxLength="
11"
ems="
inputType="
requestFocus/>
/EditText>
@+id/textView3"
layout_alignLeft="
40dp"
验证码:
@+id/cord"
4"
Button
@+id/getcord"
style="
?
attr/buttonStyleSmall"
layout_alignTop="
10dp"
visibility="
visible"
获取验证码"
@+id/savecord"
fill_parent"
layout_margin="
验证"
@+id/now"
layout_above="
gravity="
center_horizontal"
gone"
提示信息"
#aaaaaa"
/RelativeLayout>
一个主Activity代码如下:
publicclassMainActivityextendsActivityimplementsOnClickListener{
privateEditTextphone;
privateEditTextcord;
privateTextViewnow;
privateButtongetCord;
privateButtonsaveCord;
privateStringiPhone;
privateStringiCord;
privateinttime=60;
privatebooleanflag=true;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
init();
SMSSDK.initSDK(this,"
您的appkey>
您的appsecret>
EventHandlereh=newEventHandler(){
publicvoidafterEvent(intevent,intresult,Objectdata){
Messagemsg=newMessage();
msg.arg1=event;
msg.arg2=result;
msg.obj=data;
handler.sendMessage(msg);
};
SMSSDK.registerEventHandler(eh);
privatevoidinit(){
phone=(EditText)findViewById(R.id.phone);
cord=(EditText)findViewById(R.id.cord);
now=(TextView)findViewById(R.id.now);
getCord=(Button)findViewById(R.id.getcord);
saveCord=(Button)findViewById(R.id.savecord);
getCord.setOnClickListener(this);
saveCord.setOnClickListener(this);
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.getcord:
if(!
TextUtils.isEmpty(phone.getText().toString().trim())){
if(phone.getText().toString().trim().length()==11){
iPhone=phone.getText().toString().trim();
SMSSDK.getVerificationCode("
86"
iPhone);
cord.requestFocus();
getCord.setVisibility(View.GONE);
}else{
Toast.makeText(MainActivity.this,"
请输入完整电话号码"
Toast.LENGTH_LONG)how();
phone.requestFocus();
请输入您的电话号码"
Toast.LENGTH_LONG).show();
break;
caseR.id.savecord:
TextUtils.isEmpty(cord.getText().toString().trim())){
if(cord.getText().toString().trim().length()==4){
iCord=cord.getText().toString().trim();
SMSSDK.submitVerificationCode("
iPhone,iCord);
flag=false;
请输入完整验证码"
请输入验证码"
default:
//验证码送成功后提示文字
privatevoidreminderText(){
now.setVisibility(View.VISIBLE);
handlerText.sendEmptyMessageDelayed(1,1000);
HandlerhandlerText=newHandler(){
publicvoidhandleMessage(Messagemsg){
if(msg.what==1){
if(time>
0){
now.setText("
验证码已发送"
+time+"
秒"
time--;
time=60;
now.setVisibility(View.GONE);
getCord.setVisibility(View.VISIBLE);
cord.setText("
Handlerhandler=newHandler(){
//TODOAo-generatedmethodstub
super.handleMessage(msg);
intevent=msg.arg1;
intresult=msg.arg2;
Objectdata=msg.obj;
Log.e("
event"
event="
+event);
if(result==SMSSDK.RESULT_COMPLETE){
//短信注册成功后,返回MainActivity,然后提示新好友
if(event==SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE){//提交验证码成功,验证通过
Toast.makeText(getApplicationContext(),"
验证码校验成功"
Toast.LENGTH_SHORT).show();
handlerText.sendEmptyMessage
(2);
}elseif(event==SMSSDK.EVENT_GET_VERIFICATION_CODE){//服务器验证码发送成功
reminderText();
验证码已经发送"
}elseif(event==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){//返回支持发送验证码的国家列表
获取国家列表成功"
}else{
if(flag){
验证码获取失败,请重新获取"
T