本文來自:CSDN
感謝作者:qq_35812301(其實就是我的號!)
查看原文:http://blog.csdn.net/qq_35812301/article/details/79150775
一: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節點下添加以下屬性:
1
|
android
:
name
=
"com.mob.MobApplication"
|
添加以下Activity:
在Application節點下添加以下meta-data:
1
2
3
|
<!-- 通過AndroidManifest配置AppKey和AppSecret,如果你選擇通過代碼配置,則不需要配置以下meta-data -->
<meta-data android
:
name
=
"Mob-AppKey"android
:
value
=
"你的AppKey"
/>
<meta-data android
:
name
=
"Mob-AppSecret"android
:
value
=
"你的AppSecret"
/>
|
通過代碼配置:
如果選擇通過代碼配置,則不需要繼承MobApplication,只要在使用SMSSDK之前,調用以下代碼:
1
2
|
// 通過代碼注冊你的AppKey和AppSecret
MobSDK
.
init
(
context
,
"你的AppKey"
,
"你的AppSecret"
)
;
|
AndroidManifest.xml的代碼
<?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; } } }