Android 手機獲取簡訊驗證碼—自帶UI介面
阿新 • • 發佈:2019-02-04
第三方框架:簡訊驗證,我比較喜歡直來直去,多餘的話不講,直接上程式碼,這裡主要講的是在android studio中的詳細步驟。
選擇Studio下載
建立應用,包名必須與建立的專案包名一致。
建立好應用以後會給你App Key和App Secent
這樣網站申請的步驟就完成了.
下面開始在Studio中設定,首先需要注意一下,如果Studio版本高於23的話,需要把版本改成22,否則會關閉APP。
<span style="font-family:Microsoft YaHei;font-size:18px;">android { compileSdkVersion 22 buildToolsVersion "22.0.1"}</span>
<span style="font-family:Microsoft YaHei;font-size:18px;">defaultConfig {
applicationId "us.mifeng.guaju.myapplication"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
}</span>
匯入SDK,“SMSSDK”目錄存放的是簡訊SDK的全部內容,“SMSSDKSample”中儲存了簡訊SDK的演示專案程式碼,而“SMSSDKSample.apk”則是“SMSSDKSample”的可執行程式。
將MobCommons.jar,MobTools.jar,SMSSDK-2.0.1.aar,SMSSDKGUI-2.0.1.aar放到了app的libs目錄下。然後在app目錄下的build.gradle,加上紅圈中的這幾句就行了。
<span style="font-family:Microsoft YaHei;font-size:18px;">repositories{ flatDir{ dirs 'libs' //就是你放aar的目錄地址 } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:22.2.0 compile files('libs/MobCommons-2016.0714.1402.jar') compile files('libs/MobTools-2016.0714.1402.jar') compile name: 'SMSSDK-2.1.1', ext: 'aar' compile name: 'SMSSDKGUI-2.1.1', ext: 'aar' compile 'com.jakewharton:butterknife:5.1.1' }</span>
配置AndroidManifest.xml許可權
在application外面新增activity:
<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裡面新增activity:
<span style="font-family:Microsoft YaHei;font-size:18px;"><activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/></span>
實現簡訊驗證的程式碼
建立新的class檔案,繼承appliction:
<span style="font-family:Microsoft YaHei;font-size:18px;"> public void onCreate() {
super.onCreate();
SMSSDK.initSDK(this, "16f653af72b00", "52c1889f3e62c77ea8f8942b0d029664");
}
}</span>
在MainActivity中:
<span style="font-family:Microsoft YaHei;font-size:18px;">public class MainActivity extends AppCompatActivity {
//用的butterknife
@InjectView(R.id.et1)
EditText et1;
@InjectView(R.id.et2)
EditText et2;
@InjectView(R.id.getcode)
Button getCode;
@InjectView(R.id.bt_login)
Button login;
private String phoneNumber;
private String code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
public void regist() {
//需要先定義一個介面回撥
EventHandler eh = new EventHandler() {
@Override
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
System.out.println("SMSSDK.RESULT_COMPLETE");
//回撥完成
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplication(),
"您已驗證成功,請您訂餐",
Toast.LENGTH_SHORT)
.show();
}
});
//提交驗證碼成功
} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
System.out.println("EVENT_GET_VERIFICATION_CODE");
System.out.println("傳送了");
//如果收到了驗證碼就會走這
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplication(),
"已傳送驗證碼,請注意查收",
Toast.LENGTH_SHORT)
.show();
}
});
} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
System.out.println("EVENT_GET_SUPPORTED_COUNTRIES");
//返回支援傳送驗證碼的國家列表
}
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplication(),
"操作失敗,重新獲取驗證碼",
Toast.LENGTH_SHORT)
.show();
}
});
((Throwable) data).printStackTrace();
}
}
};
SMSSDK.registerEventHandler(eh); //註冊簡訊回撥
}
@OnClick({R.id.getcode, R.id.bt_login})
public void onClick(View view) {
switch (view.getId()) {
case R.id.getcode:
regist();//呼叫了註冊簡訊傳送的回撥介面
phoneNumber = et1.getText().toString().trim();
if (TextUtils.isEmpty(phoneNumber))//判斷字串是null或者是“”
{
Toast.makeText(getApplicationContext(),
"請輸入合法的手機號",
Toast.LENGTH_LONG
).show();
} else {
SMSSDK.getVerificationCode("86", phoneNumber);
}
break;
case R.id.bt_login:
phoneNumber = et1.getText().toString().trim();
code = et2.getText().toString().trim();
if (TextUtils.isEmpty(phoneNumber) && TextUtils.isEmpty(code)) {
Toast.makeText(getApplicationContext(),
"請檢驗您輸入的資訊",
Toast.LENGTH_LONG
).show();
}
else
{
SMSSDK.submitVerificationCode("86",phoneNumber,code);
}
break;
}
}
}
</span>
以上就是Mob簡訊驗證的全部程式碼。