本節(jié)內(nèi)容
1.EditText簡(jiǎn)介
2.Button簡(jiǎn)介
3.Bomb三方庫(kù)提供短信驗(yàn)證服務(wù)
4.首頁(yè)布局
5.實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)分割
6.解決bug并刪除號(hào)碼
7.添加按鈕界面跳轉(zhuǎn)
8.使用selector設(shè)置按鈕點(diǎn)擊狀態(tài)顏色
9.按鈕文字顏色切換
10.解決格式化號(hào)碼轉(zhuǎn)換為正常號(hào)碼bug
11.布局驗(yàn)證頁(yè)面提示信息
12.將輸入的內(nèi)容顯示到小方格中
13.Bmob環(huán)境搭建
14.請(qǐng)求驗(yàn)證碼
15.驗(yàn)證輸入的驗(yàn)證碼
一嗅辣、EditText簡(jiǎn)介
1.它可以監(jiān)聽文本改變的事件
mPhoneEditText.addTextChangedListener(object:LoginTextWatcher(){
override fun afterTextChanged(s: Editable?) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
}
-
這三個(gè)事件分別是: afterTextChanged(文本改變之后)、onTextChanged(文本正在改變)和beforeTextChanged(文本改變之前)
2.如果不想顯示EditText中的光標(biāo)祈坠,可以設(shè)置一下节沦,將它去除
android:cursorVisible="false"
3.輸入數(shù)字時(shí)评甜,如果覺得數(shù)字間的間距很小,可以設(shè)置一下把間距加大
android:letterSpacing="0.1"
4.如果想要輸入內(nèi)容,但是又不想顯示輸入框旷档,那么就可以將它的透明度設(shè)置得小一點(diǎn)跛璧,這樣就可以將其隱藏起來严里。
android:alpha="0.01"
二、Button簡(jiǎn)介
1.通過text屬性設(shè)置按鈕的文本追城,顏色刹碾,文字大小等前面都講過,這里就不再詳述座柱。
2.給按鈕添加一個(gè)id之后迷帜,就可以給它設(shè)置點(diǎn)擊事件了。
3.比較特別的按鈕有switch色洞,也可以給switch設(shè)置點(diǎn)擊事件戏锹。switch有一個(gè)比較特別的屬性就是isChecked。在手機(jī)的設(shè)置里面可能會(huì)使用到switch火诸。
switch1.setOnClickListener {
val s = it as Switch
if(s.isChecked){
mLogin.text = "打開了"
}else{
mLogin.text = "關(guān)閉了"
}
}
4.還有checkBox按鈕锦针,這些屬性都比較簡(jiǎn)單,可以自行琢磨置蜀。
三奈搜、Bmob三方庫(kù)提供短信驗(yàn)證服務(wù)
1.先在Bmob注冊(cè)一個(gè)賬號(hào),進(jìn)入主頁(yè)之后盯荤,點(diǎn)擊左上角創(chuàng)建應(yīng)用
-
我這里是已經(jīng)創(chuàng)建好了一個(gè)
2.回到網(wǎng)站首頁(yè)馋吗,點(diǎn)擊文檔進(jìn)入文檔中心。然后點(diǎn)擊數(shù)據(jù)服務(wù)的Android秋秤。
3.之后按照那一頁(yè)的提示操作即可宏粤。
-
反正跟著它一路向下操作即可脚翘。
-
先在這里面添加底下那一行代碼,也就是倉(cāng)庫(kù)地址
allprojects {
repositories {
//Bmob的maven倉(cāng)庫(kù)地址--必填
maven {url 'https://dl.bintray.com/chaozhouzhang/maven' }
-
然后在app的buildGradle的android里面添加依賴庫(kù)
useLibrary 'org.apache.http.legacy'
-
然后在dependencies里面添加以下的依賴文件商架,然后同步一下堰怨。
implementation 'cn.bmob.android:bmob-sdk:3.7.8'
implementation "io.reactivex.rxjava2:rxjava:2.2.8"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.okhttp3:okhttp:3.14.1'
implementation 'com.squareup.okio:okio:2.2.2'
implementation 'com.google.code.gson:gson:2.8.5'
-
然后配置一下Mainfest,在里面添加以下權(quán)限
<!-- 允許聯(lián)網(wǎng) -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 獲取GSM(2g)蛇摸、WCDMA(聯(lián)通3g)等網(wǎng)絡(luò)狀態(tài)的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 獲取wifi網(wǎng)絡(luò)狀態(tài)的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 保持CPU 運(yùn)轉(zhuǎn)备图,屏幕和鍵盤燈有可能是關(guān)閉的,用于文件上傳和下載 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 獲取sd卡寫的權(quán)限,用于文件上傳和下載 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允許讀取手機(jī)狀態(tài) 用于創(chuàng)建BmobInstallation -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<provider
android:name="cn.bmob.v3.util.BmobContentProvider"
android:authorities="com.example.message.BmobContentProvider"
android:exported="false">
</provider>
-
初始化Bomb赶袄,重新創(chuàng)建一個(gè)類揽涮,重寫onCreate()方法
class MyApplication:Application() {
override fun onCreate() {
super.onCreate()
//第一.默認(rèn)初始化
Bmob.initialize(this, "c12f5ff15568e1e18c72649071389bea");
}
}
-
Application ID從之前創(chuàng)建的應(yīng)用的key里面查看。
-
通過 requestSMSCode 方式給綁定手機(jī)號(hào)的該用戶發(fā)送指定短信模板的短信驗(yàn)證碼:
/**
* TODO template 如果是自定義短信模板饿肺,此處替換為你在控制臺(tái)設(shè)置的自定義短信模板名稱蒋困;如果沒有對(duì)應(yīng)的自定義短信模板,則使用默認(rèn)短信模板敬辣。
*/
BmobSMS.requestSMSCode(phone, "DataSDK", new QueryListener<Integer>() {
@Override
public void done(Integer smsId, BmobException e) {
if (e == null) {
mTvInfo.append("發(fā)送驗(yàn)證碼成功雪标,短信ID:" + smsId + "\n");
} else {
mTvInfo.append("發(fā)送驗(yàn)證碼失敗:" + e.getErrorCode() + "-" + e.getMessage() + "\n");
}
}
});
四溉跃、首頁(yè)布局
我們要將界面布局成如下效果:
1.布局首頁(yè)的時(shí)候村刨,添加幾個(gè)guideline,這樣方便我們布局撰茎。
2.圖片是一個(gè)正方形嵌牺,我們之前講過,在右側(cè)屬性中龄糊,點(diǎn)擊那個(gè)矩形的左上角逆粹,讓它的比例為1:1。
3.中間添加一個(gè)EditText炫惩,調(diào)節(jié)一下它的大小僻弹。
4.給輸入框添加一個(gè)邊框,所以在drawable中新建一個(gè)名為shape_roundrect的xml文件他嚷,然后把<selector>改為<shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<stroke android:color="@color/colorGray"
android:width="1dp"/>
<solid android:color="@color/colorAlphaGray"/>
</shape>
5.然后找到EditText奢方,把這個(gè)邊框應(yīng)用上
android:background="@drawable/shape_roundrect"
6.為了有更多的顏色可以選擇,可以在values下添加一個(gè)colors.xml爸舒,在里面添加一些顏色
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorGray">#666</color>
<color name="colorAlphaGray">#2666</color>
<color name="colorRed">#FF0000</color>
<color name="colorBlack">#000</color>
</resources>
7.想要輸入框內(nèi)部的內(nèi)容和邊框有一點(diǎn)間距,那么就可以設(shè)置一下padding稿蹲。(自己和自己的間距)
android:paddingStart="10dp"
8.給輸入框設(shè)置一下默認(rèn)提示文字
android:hint="輸入手機(jī)號(hào)"
五扭勉、實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)分割
1.我們平常輸入手機(jī)號(hào)碼時(shí),都會(huì)自動(dòng)分割為3 4 4 的形式苛聘。我們的實(shí)現(xiàn)思路為:時(shí)刻監(jiān)聽文本輸入涂炎,當(dāng)輸入了三個(gè)數(shù)字之后添加一個(gè)空格忠聚,當(dāng)輸入八個(gè)字符之后,再添加一個(gè)空格唱捣。所以我們要給EditText添加一個(gè)監(jiān)聽事件两蟀,時(shí)刻監(jiān)聽它的變化。
mPhoneEditText.addTextChangedListener(object:LoginTextWatcher(){
override fun afterTextChanged(s: Editable?) {
//設(shè)置按鈕是否可以點(diǎn)擊
mLogin.isEnabled = (s.toString().length == 13)
//判斷是在刪除還是輸入
if (!shouldAutoSplit) return
s.toString().length.also {
if (it == 3 || it == 8) {
//需要添加空格
s?.append(" ")
}
}
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
shouldAutoSplit =( count ==1)
}
})
2.對(duì)于TextWatcher監(jiān)聽器震缭,我們只會(huì)用到其中的兩個(gè)方法赂毯,但使用的時(shí)候還是不得不實(shí)現(xiàn)所有的方法。所以我們可以新建一個(gè)類拣宰,讓它繼承于TextWatcher党涕,然后空實(shí)現(xiàn)這個(gè)接口的所有方法。后面新建的對(duì)象繼承于我們創(chuàng)建的類即可巡社。
3.新建一個(gè)類膛堤,繼承TextWatcher。
open class LoginTextWatcher: TextWatcher{
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
}
4.當(dāng)字符串的長(zhǎng)度為3和8時(shí)晌该,需要添加空格肥荔。
s.toString().length.also {
if (it == 3 || it == 8) {
//需要添加空格
s?.append(" ")
}
}
5.因?yàn)檩斎氲臄?shù)字不超過11位,加上兩個(gè)空格朝群,就不超過13位燕耿。所以在EditText設(shè)置它的最大長(zhǎng)度位13.
android:maxLength="13"
六、解決刪除bug并獲取號(hào)碼
1.經(jīng)過上面的操作潜圃,我們發(fā)現(xiàn)了一個(gè)bug缸棵。當(dāng)我們發(fā)現(xiàn)輸錯(cuò)號(hào)碼,想要?jiǎng)h除時(shí)谭期,結(jié)果到了空格那里堵第,發(fā)現(xiàn)空格刪不掉。
-
因?yàn)楫?dāng)我們刪到第八個(gè)的時(shí)候隧出,它又執(zhí)行afterTextChanged方法踏志,結(jié)果發(fā)現(xiàn)長(zhǎng)度為8,又添加一個(gè)空格胀瞪,反反復(fù)復(fù)针余,所以刪不掉。
2.實(shí)驗(yàn)過程中凄诞,我們發(fā)現(xiàn)圆雁,在 onTextChanged方法中,添加數(shù)字的時(shí)候 count = 1帆谍,刪除數(shù)據(jù)的時(shí)候 count=0伪朽。所以我們可以根據(jù)count的值來判斷用戶是在增加還是刪除。所以我們可以定義一個(gè)變量來記錄這個(gè)汛蝙。
private var shouldAutoSplit = true
3.在afterTextChanged方法中烈涮,加一個(gè)判斷是在刪除還是輸入朴肺。如果是在輸入的話,那么就執(zhí)行下面的添加空格坚洽。如果是在刪除的話戈稿,那么就return,就不會(huì)執(zhí)行添加空格的操作讶舰。
if (!shouldAutoSplit) return
4.如果count = 1鞍盗,那么就是在做增加,那么 shouldAutoSplit = true绘雁,否則就是false
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
shouldAutoSplit =( count ==1)
}
5.因?yàn)樵谳斎氲臅r(shí)候添加了空格橡疼,所以到時(shí)候傳遞過去的數(shù)據(jù)可能也包含空格。為了避免出現(xiàn)這種情況庐舟,我們就要把它轉(zhuǎn)化為正常的數(shù)據(jù)欣除。
private fun getPhoneNumber(editable: Editable):String{
//創(chuàng)建一個(gè)新的對(duì)象 用于操作editable對(duì)象里面的內(nèi)容
SpannableStringBuilder(editable.toString()).also {
it.delete(3,4)
it.delete(7,8)
return it.toString()
}
}
七、添加按鈕界面跳轉(zhuǎn)
1.添加一個(gè)按鈕挪略,設(shè)置一個(gè)id历帚,然后給它設(shè)置一個(gè)點(diǎn)擊事件
2.因?yàn)橐D(zhuǎn)到另外一個(gè)界面,所以我們要準(zhǔn)備好另外一個(gè)界面杠娱。在這個(gè)監(jiān)聽事件中只需要啟動(dòng)一下頁(yè)面即可挽牢。
mLogin.setOnClickListener{
Intent().apply {
//跳轉(zhuǎn)方向
setClass(this@MainActivity,VerifyActivity::class.java)
//配置跳轉(zhuǎn)攜帶的數(shù)據(jù)
putExtra("phone",getPhoneNumber(mPhoneEditText.text))
//啟動(dòng)
startActivity(this)
}
}
3.跳轉(zhuǎn)過來的頁(yè)面需要接收一下數(shù)據(jù)
intent.getStringExtra("phone").also {
//顯示號(hào)碼
mPhone.text = it
}
八、使用selector設(shè)置按鈕點(diǎn)擊狀態(tài)顏色
1.輸入手機(jī)號(hào)的時(shí)候摊求,只有輸入了13位手機(jī)號(hào)禽拔,登錄按鈕才會(huì)被點(diǎn)擊,界面才會(huì)跳轉(zhuǎn)室叉。為了實(shí)現(xiàn)這個(gè)功能睹栖,我們?cè)O(shè)置一下按鈕的enabled屬性,當(dāng)它為fasle的時(shí)候茧痕,按鈕是不能被點(diǎn)擊的野来。
android:enabled="false"
2.在afterTextChanged方法中設(shè)置按鈕是否可以點(diǎn)擊,只有當(dāng)位數(shù)為13時(shí)踪旷,按鈕才能被點(diǎn)擊曼氛。
mLogin.isEnabled = (s.toString().length == 13)
3.為了讓用戶能夠直觀到感受到按鈕能否被點(diǎn)擊,我們可以讓按鈕在不同時(shí)刻變更不一樣的顏色令野。所以我們?cè)赿rawable中新建一個(gè)xml舀患。enabled狀態(tài)不同,顯示的顏色也不同气破。這樣就可以根據(jù)控件的狀態(tài)构舟,實(shí)現(xiàn)選擇器的效果。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--
根據(jù)控件的enable值 設(shè)置不同的顏色
注意順序:特殊在前 常規(guī)在后
enable狀態(tài) 運(yùn)行起來正常狀態(tài) enable = true 其他狀態(tài) enable = false
從上至下匹配
-->
<item android:drawable="@color/colorAccent" android:state_enabled="true"/>
<item android:drawable="@color/colorAlphaGray" android:state_enabled="false"/>
</selector>
4.把selector整好了以后,在按鈕那里使用起來狗超,把它的背景選為這個(gè)xml文件
android:background="@drawable/btn_status_selector"
九、按鈕文字顏色切換
1.為了美觀朴下,我們希望登錄按鈕文字的顏色也隨用戶的輸入而變化努咐,所以我們?cè)賱?chuàng)建一個(gè)xml。不能點(diǎn)擊時(shí)殴胧,顏色為黑色渗稍。可以點(diǎn)擊時(shí)团滥,顏色為白色竿屹。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/colorBlack"/>
<item android:state_enabled="true" android:color="@color/colorRed"/>
</selector>
2.在code再把textColor改為這個(gè)drawable中的文件
android:textColor="@drawable/btn_text_selector"
十、解決格式化號(hào)碼轉(zhuǎn)化為正常號(hào)碼bug
1.bug:當(dāng)我們輸入號(hào)碼時(shí)灸姊,它會(huì)按照3 4 4 的格式正常分割拱燃,然后我們進(jìn)行界面跳轉(zhuǎn)。再返回當(dāng)前界面時(shí)力惯,會(huì)發(fā)現(xiàn)顯示的是去空格后格式化的號(hào)碼碗誉,而不是3 4 4 形式的號(hào)碼。
2.要避免出現(xiàn)這種情況父晶,我們一開始就不能直接對(duì)editable進(jìn)行操作哮缺。必須先把里面的東西取出來,然后再進(jìn)行操作甲喝。所以我們用的是SpannableStringBuilder尝苇。
SpannableStringBuilder(editable.toString()).also {
it.delete(3,4)
it.delete(7,8)
return it.toString()
}
這就是前面我們這樣使用的原因。
十一埠胖、布局驗(yàn)證頁(yè)面提示信息
1.輸入手機(jī)號(hào)之后糠溜,進(jìn)入驗(yàn)證碼驗(yàn)證頁(yè)面,也就是輸入驗(yàn)證碼
2.上方圖片調(diào)整為正方形押袍,然后添加幾個(gè)TextView即可诵冒。
3.輸入驗(yàn)證碼的地方有六個(gè)小邊框,每個(gè)框框?qū)?yīng)一個(gè)數(shù)字谊惭。最外面用一個(gè)EditText來包裹一下汽馋,小的框框是TextView。
4.添加六個(gè)TextView圈盔,讓文字居中
android:gravity="center"
5.給這六個(gè)TextView添加六個(gè)邊框豹芯,邊框就是在drawable中新建一個(gè)xml,然后設(shè)置一下<shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:color="@color/colorPrimary" android:width="1dp"/>
<solid android:color="@color/colorAlphaGray"/>
<corners android:radius="6dp"/>
</shape>
6.然后在code里面把background設(shè)置為這個(gè)drawable中的文件驱敲。
7.拖動(dòng)一個(gè)EditText铁蹈,和這六個(gè)小框框重合,設(shè)置為match_parent众眨,并設(shè)置其透明度為0.01
十二握牧、將輸入的內(nèi)容顯示到小方格中
1.給每個(gè)小框框添加id容诬,為mv1——mv6。
2.讓EditText中的內(nèi)容顯示到每一個(gè)小方框中的方法:EditText中是一串字符串沿腰,字符串又有索引览徒。只需要將索引對(duì)應(yīng)的字符作為每一個(gè)小的TextView中的Text即可。
3.保存所有顯示驗(yàn)證碼的textView
private val verifyViews:Array<TextView> by lazy {
arrayOf(mv1,mv2,mv3,mv4,mv5,mv6)
}
4.監(jiān)聽文本框內(nèi)容改變的事件
mOrigin.addTextChangedListener(object:TextWatcher{
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
}
5.這次我們只需要實(shí)現(xiàn)最后一個(gè)onTextChanged方法颂龙,所以后面的代碼都是寫在這個(gè)方法里面的习蓬。
6.將輸入的內(nèi)容拆分到每一個(gè)textView中,其中i是索引措嵌,item是字符躲叼。
for((i,item)in s?.withIndex()!!){
//獲取i對(duì)應(yīng)的textView
verifyViews[i].text = item.toString()
}
7.如果位數(shù)小于6個(gè) 后面的文本框不顯示任何內(nèi)容。
for(i in s.length..5){
verifyViews[i].text= ""
}
8.設(shè)置Edit Text文本框最長(zhǎng)輸入長(zhǎng)度為6.
android:maxLength="6"
十三企巢、Bmob環(huán)境搭建
1.當(dāng)我們進(jìn)入輸入驗(yàn)證碼的界面的時(shí)候枫慷,我們希望終端能自動(dòng)向我們輸入的號(hào)碼發(fā)送短信。輸入驗(yàn)證碼之后包斑,它又會(huì)將接收到的驗(yàn)證碼和服務(wù)器發(fā)給用戶的驗(yàn)證碼進(jìn)行比較流礁,如果一致就返回一個(gè)結(jié)果,如果不一致就提示輸入錯(cuò)誤罗丰。這里我們就需要用到一個(gè)服務(wù)器發(fā)送短信神帅。
2.關(guān)于配置數(shù)據(jù)庫(kù)和依賴庫(kù)等,我已經(jīng)在前面寫過了萌抵。其中配置的應(yīng)用包名為applicationId后面顯示的內(nèi)容找御。
3.在Manifest里面配置一下name
android:name=".MyApplication"
十四、請(qǐng)求驗(yàn)證碼
1.不讓這個(gè)EditText被長(zhǎng)按绍填。
android:longClickable="false"
2.為了方便管理Bmob操作霎桅,我們創(chuàng)建一個(gè)類來管理關(guān)于Bmob的操作。
object BmobUtil {}
3.實(shí)現(xiàn)的功能就是①向服務(wù)器 請(qǐng)求發(fā)送驗(yàn)證碼讨永,完成之后有兩個(gè)返回值(發(fā)送成功滔驶、發(fā)送失敗)②驗(yàn)證用戶輸入的驗(yàn)證碼 (驗(yàn)證成功 卿闹、驗(yàn)證失斀腋狻)
4.先寫一個(gè)發(fā)送驗(yàn)證碼的方法,傳遞兩個(gè)參數(shù)锻霎,第一個(gè)是手機(jī)號(hào)著角,第二個(gè)是回調(diào)的結(jié)果。我們這里用高階函數(shù)作為返回的結(jié)果旋恼。
fun requestSMSCode(phone:String,callBack:(Int)->Unit){
BmobSMS.requestSMSCode(phone,"",object:QueryListener<Int>(){
override fun done(p0: Int?, p1: BmobException?) {
if(p1==null){
callBack(SUCCESS)
}else{
callBack(FAILURE)
}
}
} )
}
-
為了方便理解吏口,定義兩個(gè)靜態(tài)參數(shù)。
const val SUCCESS = 0
const val FAILURE = 1
5.對(duì)于客戶端來說,只要調(diào)用我們這里寫好的方法就可以發(fā)送短信了产徊。
override fun onResume() {
super.onResume()
BmobUtil.requestSMSCode(mPhone.text.toString()){
if(it==BmobUtil.SUCCESS){
Toast.makeText(this,"發(fā)送驗(yàn)證碼成功",Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(this,"發(fā)送驗(yàn)證碼失敗",Toast.LENGTH_SHORT).show()
}
}
}
十五昂勒、驗(yàn)證輸入的驗(yàn)證碼
1.在BmobUtil 類中重寫一下驗(yàn)證的方法。第一個(gè)參數(shù)為電話號(hào)碼舟铜,第二個(gè)參數(shù)為用戶輸入的驗(yàn)證碼叁怪,第三個(gè)參數(shù)為匿名內(nèi)部類。
fun verifySMSCode(phone:String,code:String,callBack: (Int) -> Unit){
BmobSMS.verifySmsCode(phone,code,object :UpdateListener(){
override fun done(p0: BmobException?) {
if(p0==null){
//驗(yàn)證碼驗(yàn)證成功
callBack(SUCCESS)
}else{
//驗(yàn)證失敗
callBack(FAILURE)
}
}
})
}
2.發(fā)送驗(yàn)證請(qǐng)求之后深滚,再判斷驗(yàn)證成功與否。如果成功涣觉,則進(jìn)行界面跳轉(zhuǎn)痴荐。如果失敗就提示一下,并清空文本框中的內(nèi)容官册。
if(s.length==6){
//發(fā)起驗(yàn)證的請(qǐng)求
BmobUtil.verifySMSCode(mPhone.text.toString(),s.toString()){
if(it==BmobUtil.SUCCESS){
startActivity(Intent(this@VerifyActivity,HomeActivity::class.java))
}else{
Toast.makeText(this@VerifyActivity,"驗(yàn)證失敗",Toast.LENGTH_SHORT).show()
mOrigin.text.clear()
}
}
}
3.自己創(chuàng)建一個(gè)簡(jiǎn)單的頁(yè)面生兆,作為驗(yàn)證成功后跳轉(zhuǎn)的界面。就改一下背景顏色即可膝宁。只要能分辨得出和前面的頁(yè)面不一樣都行鸦难。之后在manifest中注冊(cè)一下。
<activity android:name=".HomeActivity"/>
所有的操作基本完成员淫,我們運(yùn)行之后合蔽,發(fā)送短信,如果是正確的號(hào)碼介返,就會(huì)收到這樣的短信拴事。