Android Studio使用Mob來獲取手機驗證碼的原始碼
原創作品,允許轉載,轉載時請務必宣告作者資訊和本宣告。
本人小白,那個大神看到有問題可指出,謝謝。。。
一:Android studio 搭配 Mobd的SDK的環境我整整搞了一個下午加晚上也沒成功,上網找也不OK,最後實在不行跑去問了客服我才知道問題在哪裡出錯了!
就是我匯入jar和aar包的問題上出錯!弄這個驗證碼我才知道 還有aar的存在的。
*.jar:只包含了class檔案與清單檔案,不包含資原始檔,如圖片等所有res中的檔案。
*.aar:包含所有資源,class以及res資原始檔全部包含
現在我把搭配的sdk(mod)錯誤都一一列舉出來
1):先加入包
第一錯誤:
(圖一)
(圖二)
然後執行===》最後錯誤 (圖三)
第二個錯誤:然後又根據第一個查到 aar要新增這個 apply plugin: 'com.android.library'
(圖四)
顯示的錯誤:
(圖⑤)
第三個: 上網查到好像說:
apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
這個兩個會產生衝突, 那感情好我直接刪掉 apply plugin: 'com.android.application' ,本來以為成功來著,但是還是出錯
(圖⑥)
又上網查了一下 好像必須要有 apply plugin: 'com.android.application' ,那我之好把之前的加的給刪掉
反正就是這個三個弄我好久好久。。。。
根據客服回答,我才弄懂,哦!原來這樣的。。。。
(圖⑦)
(圖⑧)
好了,我的問題解決了
2):首先去mob的 官網下載 包
1:如果想要實現手機驗證碼,那就必須要在官網註冊一個賬號啊。
(圖一)
2:註冊好之後, 去後臺申請 SSMSDK驗證碼哦(官網也有)
舊版後臺入口:登入新版後臺之後,頁面右上角有“回到舊版”的按鈕。如下圖 :
(圖二)
新版後臺如何建立應用獲得AppKey:
登入後臺之後,點選下圖中的“新增應用”按鈕,即會彈出建立新應用對話方塊。 請正確填寫應用的名稱,特別是用到簡訊驗證碼SDK的使用者,此應用名稱會顯示在驗證簡訊內容中。此應用名稱可在左側目錄的“設定”中修 改(見圖六)
(圖三)
新版後臺如何新增產品:
填寫應用名稱儲存成功後,會跳轉到(圖四)所示頁面,根據自己的需求,點選左側列表中相應SDK新增即可。 (如只建立了appkey,而沒有新增任何一個SDK產品,則appkey無法正常使用) (圖四)
同一個應用下新增多個SDK,則這些SDK將會使用同一個App Key和App Secret。
下圖左側列表中已新增的3個SDK產品,將會使用同一個App Key和App Secret。 (圖五 -0)
下面(圖五 -1) 是我的驗證碼情況, 根據自個需要什麼就新增什麼
(圖五 -1)
新版後臺如何檢視和修改應用資訊:點選下圖中的“設定”即可檢視和修改。 (圖六)
如何在新後臺檢視應用及資料:點選圖中小三角按鈕,
即可顯示所有應用(包括之前在舊版後臺建立的應用),點選相應的應用即可自由切換檢視相應的資料。
(圖七)
3:配置Android studio環境
開啟剛剛下載sdk資料夾找到SMSSDK把包放到libs
(圖1)
(圖2)
4:在AndroidManifest.xml新增許可權
(圖3)
在Application節點下新增以下屬性:
新增以下Activity:
在Application節點下新增以下meta-data:
如果選擇通過程式碼配置,則不需要繼承MobApplication,只要在使用SMSSDK之前,呼叫以下程式碼:
AndroidManifest.xml的程式碼 (CSDN的編譯好像沒有顏色,部落格園的有,所以再部落格園弄了,直接複製過來)
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="zhu.com.yzm4"> <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.READ_SMS" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:name="com.mob.MobApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize"/> <!-- 通過AndroidManifest配置AppKey和AppSecret,如果你選擇通過程式碼配置,則不需要配置以下meta-data --> <meta-data android:name="Mob-AppKey" android:value="23e5aca8caef0"/> <meta-data android:name="Mob-AppSecret" android:value="2ad1d3d6f87f696cd872d60f10966f31"/> </application> </manifest>
5:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="zhu.com.yzm4.MainActivity"> <Button android:text="註冊" android:layout_width="310dp" android:layout_height="45dp" android:layout_marginTop="20dp" android:id="@+id/btn_register" android:background="@color/colorPrimary" android:textColor="@color/colorAccent" android:layout_below="@+id/edit_code" android:layout_centerHorizontal="true" /> <!--自定義的下劃線EditText--> <EditText android:layout_width="320dp" android:layout_height="40dp" android:inputType="textPersonName" android:hint="你的手機號" android:ems="10" android:id="@+id/edit_phone" android:layout_weight="1" android:layout_marginTop="96dp" android:layout_alignParentTop="true" android:layout_alignStart="@+id/edit_code" /> <EditText android:layout_width="210dp" android:layout_height="45dp" android:inputType="textPersonName" android:hint="請輸入驗證碼" android:ems="10" android:layout_marginTop="41dp" android:id="@+id/edit_code" android:layout_below="@+id/edit_phone" android:layout_alignStart="@+id/btn_register" /> <Button android:text="獲取驗證碼" android:layout_width="100dp" android:layout_height="40dp" android:id="@+id/btn_getcord" android:background="@color/colorPrimary" android:textColor="@color/colorAccent" android:layout_alignBaseline="@+id/edit_code" android:layout_alignBottom="@+id/edit_code" android:layout_alignEnd="@+id/edit_phone" /> </RelativeLayout>
6:MainActivity(再結合別人的原始碼)
package zhu.com.yzm4; import android.app.Activity; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; public class MainActivity extends Activity implements View.OnClickListener { private EditText edit_phone; private EditText edit_cord; private TextView now; private Button btn_getCord; private Button btn_register; private String phone_number; private String cord_number; EventHandler eventHandler; private int time=60; private boolean flag=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getId(); eventHandler = new EventHandler() { 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(eventHandler); } @Override protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterEventHandler(eventHandler); } /** * 使用Handler來分發Message物件到主執行緒中,處理事件 */ Handler handler=new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); int event=msg.arg1; int result=msg.arg2; Object data=msg.obj; if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { if(result == SMSSDK.RESULT_COMPLETE) { boolean smart = (Boolean)data; if(smart) { Toast.makeText(getApplicationContext(),"該手機號已經註冊過,請重新輸入", Toast.LENGTH_LONG).show(); edit_phone.requestFocus(); return; } } } if(result==SMSSDK.RESULT_COMPLETE) { if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) { Toast.makeText(getApplicationContext(), "驗證碼輸入正確", Toast.LENGTH_LONG).show(); } } else { if(flag) { btn_getCord.setVisibility(View.VISIBLE); Toast.makeText(getApplicationContext(),"驗證碼獲取失敗請重新獲取", Toast.LENGTH_LONG).show(); edit_phone.requestFocus(); } else { Toast.makeText(getApplicationContext(),"驗證碼輸入錯誤", Toast.LENGTH_LONG).show(); } } } }; /** * 獲取id */ private void getId() { edit_phone=findViewById(R.id.edit_phone); edit_cord=findViewById(R.id.edit_code); btn_getCord=findViewById(R.id.btn_getcord); btn_register=findViewById(R.id.btn_register); btn_getCord.setOnClickListener(this); btn_register.setOnClickListener(this); } /** * 按鈕點選事件 */ public void onClick(View v) { switch (v.getId()) { case R.id.btn_getcord: if(judPhone())//去掉左右空格獲取字串 { SMSSDK.getVerificationCode("86",phone_number); edit_cord.requestFocus(); } break; case R.id.btn_register: if(judCord()) SMSSDK.submitVerificationCode("86",phone_number,cord_number); flag=false; break; default: break; } } private boolean judPhone() { if(TextUtils.isEmpty(edit_phone.getText().toString().trim())) { Toast.makeText(MainActivity.this,"請輸入您的電話號碼",Toast.LENGTH_LONG).show(); edit_phone.requestFocus(); return false; } else if(edit_phone.getText().toString().trim().length()!=11) { Toast.makeText(MainActivity.this,"您的電話號碼位數不正確",Toast.LENGTH_LONG).show(); edit_phone.requestFocus(); return false; } else { phone_number=edit_phone.getText().toString().trim(); String num="[1][358]\\d{9}"; if(phone_number.matches(num)) return true; else { Toast.makeText(MainActivity.this,"請輸入正確的手機號碼",Toast.LENGTH_LONG).show(); return false; } } } private boolean judCord() { judPhone(); if(TextUtils.isEmpty(edit_cord.getText().toString().trim())) { Toast.makeText(MainActivity.this,"請輸入您的驗證碼",Toast.LENGTH_LONG).show(); edit_cord.requestFocus(); return false; } else if(edit_cord.getText().toString().trim().length()!=4) { Toast.makeText(MainActivity.this,"您的驗證碼位數不正確",Toast.LENGTH_LONG).show(); edit_cord.requestFocus(); return false; } else { cord_number=edit_cord.getText().toString().trim(); return true; } } }
相關文章
- ios 手機驗證碼獲取iOS
- 短視訊平臺原始碼,獲取安卓手機驗證碼原始碼安卓
- 手機直播原始碼,Android Studio使用者登入及驗證原始碼Android
- android 獲取手機號碼Android
- 前端獲取驗證碼前端
- 手機號碼驗證
- app直播原始碼,驗證時實現獲取驗證碼並顯示倒數計時的功能APP原始碼
- js驗證手機號碼JS
- js 獲取驗證碼計時器JS
- 獲取驗證碼倒數計時
- 驗證碼機制之驗證碼重複使用
- 線上直播原始碼,通過手機號簡訊接收驗證碼原始碼
- Android學習筆記之簡訊驗證碼的獲取和讀取Android筆記
- 驗證手機號碼格式的程式碼例項
- 手機直播原始碼,驗證碼自動讀秒倒數計時原始碼
- Android Activity Deeplink啟動來源獲取原始碼分析Android原始碼
- 短影片app原始碼,圖形和簡訊驗證碼的自動識別獲取APP原始碼
- java之使用Servlet生成驗證碼的原始碼分享JavaServlet原始碼
- 手機直播原始碼,Android studio 實現簡單的視訊播放原始碼Android
- 阿里雲簡訊服務的使用-----獲取簡訊驗證碼阿里
- 獲取AOSP原始碼原始碼
- android獲取手機ipAndroid
- android系統的原始碼獲取(親測可用)Android原始碼
- 驗證手機號碼程式碼簡單程式碼例項
- Android 原始碼獲取-----在Windows環境下通過Git得到Android原始碼Android原始碼WindowsGit
- Java+springboot最簡單的驗證碼的獲取與使用方式JavaSpring Boot
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- 通過gitHub獲取vlc-Android原始碼GithubAndroid原始碼
- JQuery表單驗證(包括:使用者名稱,手機號,密碼,確認密碼,驗證碼60s)jQuery密碼
- 表單驗證手機號碼格式例項程式碼
- day79:luffy:註冊之對手機號的驗證&實現基本的註冊功能邏輯&點選獲取驗證碼&redisRedis
- java實現動態驗證碼原始碼——繪製驗證碼的jspJava原始碼JS
- js驗證手機號碼的正規表示式JS
- 手機收到的驗證碼同步到電腦中
- HarmonyOS原始碼獲取大全原始碼
- 直播平臺原始碼,iOS中使用 Date/NSDate 來獲取時間原始碼iOS
- Android獲取手機配置資訊Android
- 隨機驗證碼隨機