短信验证

来源:互联网 发布:番禺沙湾网络 编辑:程序博客网 时间:2024/05/29 09:53

1.:导入包


2:

2.2、在Module的build.gradle里面将libs加入仓库(repositories):

repositories{    flatDir{        dirs 'libs' //就是你放aar的目录地址    }}

2.3、在Module的build.gradle里面添加依赖(dependencies ):

dependencies {    ....//你的其他依赖    compile name:'SMSSDK-<version>',ext:'aar'    compile name:'SMSSDKGUI-<version>',ext:'aar'}






3:.设置权限

 <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" />



4、添加以下Activity:

<activity   android:name="com.mob.tools.MobUIShell"   android:theme="@android:style/Theme.Translucent.NoTitleBar"   android:configChanges="keyboardHidden|orientation|screenSize"   android:windowSoftInputMode="stateHidden|adjustResize"/>


5.布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <EditText
        android:id="@+id/et_phone_number"
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:hint="phone number"
        android:onClick="onClick" />


    <LinearLayout
        android:layout_width="350dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:orientation="horizontal">


        <EditText
            android:id="@+id/et_verification_code"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:hint="verification code"
            android:onClick="onClick" />


        <TextView
            android:id="@+id/tv_get_verification_code"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:onClick="onClick"
            android:padding="10dp"
            android:text="获取验证码"
            android:textSize="19dp" />


    </LinearLayout>


    <TextView
        android:id="@+id/tv_verification_code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:text="验证"
        android:textSize="25dp" />


    <TextView
        android:id="@+id/tv_show_verification_pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="15dp"
        android:text="验证"
        android:textSize="25dp" />


</LinearLayout>





6.在MainActivity里面写


public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    private EditText et_phone_number;
    private EditText et_verification_code;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView tv_show_verification_pager = (TextView) findViewById(R.id.tv_show_verification_pager);
        TextView tv_get_verification_code = (TextView) findViewById(R.id.tv_get_verification_code);
        TextView tv_verification_code = (TextView) findViewById(R.id.tv_verification_code);
        tv_show_verification_pager.setOnClickListener(this);
        tv_get_verification_code.setOnClickListener(this);
        tv_verification_code.setOnClickListener(this);


        et_phone_number = (EditText) findViewById(R.id.et_phone_number);
        et_verification_code = (EditText) findViewById(R.id.et_verification_code);


        //注册短信回调
        SMSSDK.registerEventHandler(eh);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tv_show_verification_pager:


//打开注册页面
                RegisterPage registerPage = new RegisterPage();
                registerPage.setRegisterCallback(new EventHandler() {
                    public void afterEvent(int event, int result, Object data) {
// 解析注册结果
                        if (result == SMSSDK.RESULT_COMPLETE) {
                            @SuppressWarnings("unchecked")
                            HashMap<String, Object> phoneMap = (HashMap<String, Object>) data;
                            String country = (String) phoneMap.get("country");
                            String phone = (String) phoneMap.get("phone");
                        }
                    }
                });
                registerPage.show(MainActivity.this);
                break;
            case R.id.tv_get_verification_code:
                SMSSDK.getVerificationCode("86", et_phone_number.getText().toString().trim(), new OnSendMessageHandler() {
                    @Override
                    public boolean onSendMessage(String s, String s1) {
                        return false;
                    }
                });


                break;
            case R.id.tv_verification_code:
                SMSSDK.submitVerificationCode("86", et_phone_number.getText().toString().trim(), et_verification_code.getText().toString().trim());
                break;
        }
    }


    EventHandler eh = new EventHandler() {


        @Override
        public void afterEvent(int event, int result, Object data) {


            if (result == SMSSDK.RESULT_COMPLETE) {
                //回调完成
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    //提交验证码正确的回调
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, "验证成功", Toast.LENGTH_SHORT).show();
                        }
                    });
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    //获取验证码成功
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.this, "获取验证码成功", Toast.LENGTH_SHORT).show();
                        }
                    });
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                    //返回支持发送验证码的国家列表
                }
            } else {
                ((Throwable) data).printStackTrace();
                Log.e("tag", ((Throwable) data).getMessage().toString());
                //获取验证码成功
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();


                    }
                });
            }


        }
    };


    @Override
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eh);
    }
}


7.创建一个对应消息类

public class app extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 通过代码注册你的AppKey和AppSecret
        MobSDK.init(this, "1ff436dce2b00", "a95fd735f3142840ee845599b9f3d572");
    }
}