Android Studio使用Mob來獲取手機驗證碼的源碼


本文來自: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節點下添加以下屬性:

               添加以下Activity:

 

 在Application節點下添加以下meta-data:

通過代碼配置:

如果選擇通過代碼配置,則不需要繼承MobApplication,只要在使用SMSSDK之前,調用以下代碼:

 

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;
        }

    }


}

           

                 源碼下載

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM