安卓 实现获取手机验证码登录功能

安卓 实现获取手机验证码登录功能,第1张

安卓 实现手机获取短信验证码登录

文章目录 安卓 实现手机获取短信验证码登录一、获取短信验证码前面准备?(可看平台文档认证)二、开始编写代码配置依赖1.因为我们需要获取验证码所以要在AndroidManifest文件中添加权限2.在project build.gradle文件dependencies{ }里面添加依赖 一行即可3.在APP build.gradle文件上面添加4.在APP build.gradle文件android{ }里面添加5.最后在android Studio项目中 三.开始编写代码1.先写一个.xml布局2.java类里面3.新建java类 Utils4.需要跳转页面,新建activity_main2.xml和Main2Activity 四.总结写完后运行项目,输入自己的手机号获取验证码试一下吧!


一、获取短信验证码前面准备?(可看平台文档认证)

1.首先进入http://www.mob.com/ MobTech官网注册账号。
2.点击开发者服务 开发者平台进入填写基本资料获取认证。
3.注册 填写完资料获取到平台给你的AppKey和App Secret,这两个东西非常重要,在后面的代码编写中要用到!

二、开始编写代码配置依赖 1.因为我们需要获取验证码所以要在AndroidManifest文件中添加权限
<!-- 可选权限说明 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 允许应用程序联网(必须) -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许访问WiFi网络状态信息(必须) -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 允许读取手机状态(必须) -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许访问网络状态(必须) -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许写手机存储(必须) -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> <!-- GUI自动填充验证码功能(非必须) -->
    <uses-permission android:name="android.permission.READ_SMS" /> <!-- 从短信中读取验证码接口(非必须) -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
2.在project build.gradle文件dependencies{ }里面添加依赖 一行即可
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
3.在APP build.gradle文件上面添加
apply plugin: 'com.android.application'
// 添加插件
apply plugin: 'com.mob.sdk'  //添加这一行即可
4.在APP build.gradle文件android{ }里面添加
  // 在MobSDK的扩展中注册SMSSDK的相关信息
    MobSDK {
        appKey "更换平台上自己注册的appkey"
        appSecret "更换平台上自己注册的appSecret"
        SMSSDK {}
    }
5.最后在android Studio项目中

添加完依赖后androidstudio项目右上方会出现Sync Now,点击一下 等待项目配置完成。

三.开始编写代码 1.先写一个.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity"
    android:orientation="vertical"
    android:layout_gravity="center"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录页面"
        android:textColor="#000000"
        android:textSize="20sp"
        android:layout_gravity="center"
        />
    <EditText
        android:id="@+id/editTextPhoneNum"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="手机号"
        android:inputType="textPersonName"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        />
   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:layout_marginTop="5dp"
       >
       <EditText
           android:id="@+id/editTextCode"
           android:layout_width="100dp"
           android:layout_height="wrap_content"
           android:ems="10"
           android:hint="验证码"
           android:importantForAutofill="no"
           android:inputType="textPersonName" />
       <Button
           android:id="@+id/buttonCode"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:hint="获取验证码"
           android:layout_marginLeft="10dp"
           tools:text="获取验证码" />
   </LinearLayout>
    <Button
        android:id="@+id/buttonLogin"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:hint="登录"
       android:layout_gravity="center"
        android:layout_marginTop="10dp"
        />
</LinearLayout>
2.java类里面
public class MainActivity extends AppCompatActivity {

    private Button buttonCode,buttonLogin;
    private EditText editTextPhoneNum,editTextCode;
    private String phoneNum,code;
    private EventHandler eh;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonCode = findViewById(R.id.buttonCode);
        buttonLogin = findViewById(R.id.buttonLogin);
        editTextCode = findViewById(R.id.editTextCode);
        editTextPhoneNum = findViewById(R.id.editTextPhoneNum);

        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();
                                //如果需要跳转可在这里进行跳转页面
                                //登录成功跳转到软件首页页面
                                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                                startActivity(intent);
                            }
                        });
                    }else if (event == SMSSDK.EVENT_GET_VOICE_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){
                        Log.i("test","test");
                    }
                }else{
                    ((Throwable)data).printStackTrace();
                    Throwable throwable = (Throwable) data;
                    throwable.printStackTrace();
                    Log.i("1234",throwable.toString());
                    try {
                        JSONObject obj = new JSONObject(throwable.getMessage());
                        final String des = obj.optString("detail");
                        if (!TextUtils.isEmpty(des)){
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this,des,Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        //注册一个事件回调监听,用于处理SMSSDK接口请求的结果
        SMSSDK.registerEventHandler(eh);
        buttonCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                phoneNum = editTextPhoneNum.getText().toString();
                if(!phoneNum.isEmpty()){
                    if(Utils.checkTel(phoneNum)){ //利用正则表达式获取检验手机号
                        // 获取验证码
                        SMSSDK.getVerificationCode("86", phoneNum);
                    }else{
                        Toast.makeText(getApplicationContext(),"请输入有效的手机号",Toast.LENGTH_LONG).show();
                    }
                }else {
                    Toast.makeText(getApplicationContext(),"请输入手机号",Toast.LENGTH_LONG).show();
                    return;
                }
                phoneNum = editTextPhoneNum.getText().toString();
            }
        });
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                code = editTextCode.getText().toString();
                if(!code.isEmpty()){
                    //提交验证码
                    SMSSDK.submitVerificationCode("86", phoneNum, code);
                }else{
                    Toast.makeText(getApplicationContext(),"请输入验证码",Toast.LENGTH_LONG).show();
                    return;
                }
            }
        });
    }
    // 使用完EventHandler需注销,否则可能出现内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        SMSSDK.unregisterEventHandler(eh);
    }
}
3.新建java类 Utils

public class Utils {
    /**
     * 正则匹配手机号码:
     */
    public static boolean checkTel(String tel){
        Pattern p = Pattern.compile("^[1][3,4,5,7,8,9][0-9]{9}$");
        Matcher matcher = p.matcher(tel);
        return matcher.matches();
    }

}
4.需要跳转页面,新建activity_main2.xml和Main2Activity 四.总结 写完后运行项目,输入自己的手机号获取验证码试一下吧!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/992056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存