国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android短信驗(yàn)證碼(用的Mob短信驗(yàn)證)

2019-10-23 18:28:03
字體:
供稿:網(wǎng)友

Android短信驗(yàn)證碼功能,供大家參考,具體內(nèi)容如下

1、參考資料

Mob網(wǎng)站:http://www.mob.com/

Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android

教程的源代碼:  http://git.oschina.net/lizhanqi/MobSMSDemo

2、前期準(zhǔn)備

(1)Mob網(wǎng)站上下載SMS對應(yīng)的SDK,解壓出來為圖1,打開圖1,將其中的文件拷貝到as項(xiàng)目中的libs文件夾下,另外在add as library。

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖1

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖2

(2)在as項(xiàng)目中的AndroidManifest.xml文件中添加圖3所需權(quán)限,由于SMS權(quán)限為危險(xiǎn)權(quán)限,所以還要?jiǎng)討B(tài)申請,這在下面代碼中會(huì)有體現(xiàn)。注意權(quán)限是寫在application外面,不是里面。

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖3

(3)如果圖4中的targetSdkVersion大于22,那么在代碼中必須動(dòng)態(tài)申請權(quán)限。

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖4

(4)在as項(xiàng)目中的圖7中的build.gradle文件中添加圖5和圖6紅色框中內(nèi)容。

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖5

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖6

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖7

(5)在Mob網(wǎng)站上申請App Key和App Secret。

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

圖8

(6)Toast

Mob短信驗(yàn)證,Android短信驗(yàn)證碼,Android短信驗(yàn)證

3、代碼(沒整理,將就看)

package com.gxu.lepao.activity;import android.Manifest;import android.app.Dialog;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.os.CountDownTimer;import android.os.Handler;import android.os.Message;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AlertDialog;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.gxu.lepao.R;import com.gxu.lepao.model.UserInfo;import org.litepal.crud.DataSupport;//LitePal開源數(shù)據(jù)庫框架import java.util.List;import cn.smssdk.EventHandler;//Mob短信驗(yàn)證碼import cn.smssdk.SMSSDK;//Mob短信驗(yàn)證碼/** * Created by ljy on 2017-05-21. * 獲取和驗(yàn)證短信驗(yàn)證碼界面 */public class RegisterActivity extends BaseActivity { private EditText phoneEdit; private EditText smsEdit; private Button getSms; private Button submitSms; private TextView login; private TextView reset; private CountDownTimer countDownTimer; //倒計(jì)時(shí) private int TIME = 60; //這是中國區(qū)號,如果需要其他國家列表,可以使用getSupportedCountries();獲得國家區(qū)號 public String country = "86"; //APPKEY private static String appKey = "1e0d15118480d"; // 填寫從短信SDK應(yīng)用后臺(tái)注冊得到的APPSECRET private static String appSecret = "daa97d794e2436abcae624ac3785d2ef"; //表示是否使用了registerEventHandler private boolean ready; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  Log.d("RegisterActivity","Task; id is " + getTaskId());  setContentView(R.layout.activity_register);  // 初始化界面  initView();  //初始化SMSSDK  initSDK();  getSms.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    boolean isLogin = false;    //判斷手機(jī)號碼是否已注冊過    isLogin = isRegister();    if(!TextUtils.isEmpty(phoneEdit.getText().toString())){     if(!isLogin){       //發(fā)送短信權(quán)限      if(ContextCompat.checkSelfPermission(RegisterActivity.this        ,Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){       //顯示申請權(quán)限彈窗       showRequestPermission();      }else{       //彈窗確認(rèn)       alterWarning();      }     }else{      Toast.makeText(RegisterActivity.this,"此手機(jī)號碼已經(jīng)注冊過",Toast.LENGTH_SHORT).show();     }    }else{     Toast.makeText(RegisterActivity.this,"請輸入手機(jī)號碼",Toast.LENGTH_SHORT).show();    }   }  });  submitSms.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    String sms = smsEdit.getText().toString();    String phone = phoneEdit.getText().toString();    if(!TextUtils.isEmpty(sms)){     SMSSDK.submitVerificationCode( country, phone, sms);    }else{     Toast.makeText(RegisterActivity.this,"請輸入驗(yàn)證碼",Toast.LENGTH_SHORT).show();    }   }  });  login.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);    startActivity(intent);   }  });  reset.setOnClickListener(new View.OnClickListener(){   @Override   public void onClick(View v) {    Intent intent = new Intent(RegisterActivity.this,ResetPwdActivity.class);    startActivity(intent);   }  }); } //申請權(quán)限彈窗 private void showRequestPermission(){  //先new出一個(gè)監(jiān)聽器,設(shè)置好監(jiān)聽  DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){   @Override   public void onClick(DialogInterface dialog, int which) {    switch(which){     case Dialog.BUTTON_POSITIVE:      //接收短信權(quán)限      ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.RECEIVE_SMS},1);      //發(fā)送短信權(quán)限      ActivityCompat.requestPermissions(RegisterActivity.this,new String[]{Manifest.permission.SEND_SMS},2);      //彈窗確認(rèn)      alterWarning();      break;     case Dialog.BUTTON_NEGATIVE:      Toast.makeText(RegisterActivity.this, "拒絕" + which, Toast.LENGTH_SHORT).show();      break;    }   }  };  //dialog參數(shù)設(shè)置  AlertDialog.Builder builder=new AlertDialog.Builder(RegisterActivity.this); //先得到構(gòu)造器  builder.setTitle("申請權(quán)限"); //設(shè)置標(biāo)題  builder.setMessage("要允許lepao接收驗(yàn)證碼短信嗎?"); //設(shè)置內(nèi)容  builder.setIcon(R.mipmap.ic_launcher);//設(shè)置圖標(biāo),圖片id即可  builder.setPositiveButton("允許",dialogOnclicListener);  builder.setNegativeButton("拒絕", dialogOnclicListener);  builder.create().show(); } //申請權(quán)限 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  switch (requestCode){   case 1:    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){     //initSDK();     Toast.makeText(this,"你授權(quán)。。。接收短信權(quán)限",Toast.LENGTH_SHORT).show();    }else{     Toast.makeText(this,"你拒絕。。。接收短信權(quán)限",Toast.LENGTH_SHORT).show();    }    break;   case 2:    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){     Toast.makeText(this,"你授權(quán)。。。發(fā)送短信權(quán)限",Toast.LENGTH_SHORT).show();    }else{     Toast.makeText(this,"你拒絕。。。發(fā)送短信權(quán)限",Toast.LENGTH_SHORT).show();    }    break;   default:  } } // 初始化短信SDK private void initSDK() {  SMSSDK.initSDK(this, appKey, appSecret, true);  //final Handler handler = new Handler();  EventHandler eventHandler = new EventHandler() {   public void afterEvent(int event, int result, Object data) {    //回調(diào)完成    if (result == SMSSDK.RESULT_COMPLETE)    {     //驗(yàn)證碼驗(yàn)證成功     if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)     {      toast("驗(yàn)證成功");      Intent intent = new Intent(RegisterActivity.this,SetPwdActivity.class);      intent.putExtra("phone",phoneEdit.getText().toString());      startActivity(intent);      finish();     }     //已發(fā)送驗(yàn)證碼     else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)     {      toast("驗(yàn)證碼已經(jīng)發(fā)送");     } else     {      ((Throwable) data).printStackTrace();      String str = data.toString();      toast(str);     }    }    if(result==SMSSDK.RESULT_ERROR) {     toast("驗(yàn)證碼錯(cuò)誤");    }   }  };  // 注冊回調(diào)監(jiān)聽接口  SMSSDK.registerEventHandler(eventHandler);  ready = true; } //吐司的一個(gè)小方法 private void toast(final String str) {  runOnUiThread(new Runnable() {   @Override   public void run() {    Toast.makeText(RegisterActivity.this, str, Toast.LENGTH_SHORT).show();   }  }); } //銷毀短信注冊 @Override protected void onDestroy() {  // 注銷回調(diào)接口registerEventHandler必須和unregisterEventHandler配套使用,否則可能造成內(nèi)存泄漏。  if(ready){   SMSSDK.unregisterAllEventHandler();  }  super.onDestroy(); } //初始化界面 private void initView(){  phoneEdit = (EditText) findViewById(R.id.phone);  smsEdit = (EditText) findViewById(R.id.sms);  getSms = (Button) findViewById(R.id.getSms);  submitSms = (Button) findViewById(R.id.submitSms);  login = (TextView) findViewById(R.id.login);  reset = (TextView) findViewById(R.id.reset); } //彈窗確認(rèn) private void alterWarning(){  //先new出一個(gè)監(jiān)聽器,設(shè)置好監(jiān)聽  DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){   @Override   public void onClick(DialogInterface dialog, int which) {    switch(which){     case Dialog.BUTTON_POSITIVE:      dialog.dismiss();      //通過sdk發(fā)送短信驗(yàn)證(請求獲取短信驗(yàn)證碼,在監(jiān)聽(eventHandle)中返回)      SMSSDK.getVerificationCode(country, phoneEdit.getText().toString());      //設(shè)置獲取驗(yàn)證碼按鈕不能點(diǎn)擊      getSms.setClickable(false);      //倒計(jì)時(shí),執(zhí)行次數(shù)為(TIME+1)*1000/1000,countDownTimer每次執(zhí)行間隔:1000(單位為毫秒)      countDownTimer = new CountDownTimer((TIME+1)*1000, 1000) {       @Override       public void onTick(long millisUntilFinished) {        getSms.setText(TIME-- + "秒后再次獲取驗(yàn)證碼");       }       @Override       public void onFinish() {        //設(shè)置獲取驗(yàn)證碼按鈕可以點(diǎn)擊        getSms.setClickable(true);        getSms.setText("點(diǎn)擊獲取短信驗(yàn)證碼");       }      };      countDownTimer.start();      break;     case Dialog.BUTTON_NEGATIVE:      dialog.dismiss();      Toast.makeText(RegisterActivity.this, "已取消", Toast.LENGTH_SHORT).show();      break;    }   }  };  //dialog參數(shù)設(shè)置  AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到構(gòu)造器  builder.setTitle("發(fā)送短信"); //設(shè)置標(biāo)題  builder.setMessage("我們將把驗(yàn)證碼發(fā)送到以下號碼:/n"+country+"-"+phoneEdit.getText().toString()); //設(shè)置內(nèi)容  builder.setIcon(R.drawable.icon);//設(shè)置圖標(biāo),圖片id即可  builder.setPositiveButton("確認(rèn)",dialogOnclicListener);  builder.setNegativeButton("取消", dialogOnclicListener);  builder.create().show(); } //判斷手機(jī)號碼是否已注冊過 public boolean isRegister(){  boolean isLogin = false;  。。。。。299   return isLogin; }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特左旗| 阜城县| 龙口市| 北碚区| 大厂| 江陵县| 砀山县| 布尔津县| 化州市| 唐山市| 明水县| 新余市| 宝兴县| 土默特右旗| 迁安市| 南涧| 平顺县| 东光县| 富民县| 涡阳县| 新宾| 岑巩县| 东乡县| 富源县| 尖扎县| 大庆市| 内江市| 望都县| 建始县| 察隅县| 隆子县| 枣强县| 西宁市| 周至县| 苍溪县| 宕昌县| 台东市| 德州市| 靖边县| 会宁县| 广丰县|