1. 程式人生 > >Android 手機獲取簡訊驗證碼—自帶UI介面

Android 手機獲取簡訊驗證碼—自帶UI介面

           第三方框架:簡訊驗證,我比較喜歡直來直去,多餘的話不講,直接上程式碼,這裡主要講的是在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簡訊驗證的全部程式碼。