程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

Android基于Mob平台(SMSSDK)实现手机号登录

发布于2021-06-14 10:11     阅读(42)     评论(0)     点赞(24)     收藏(2)


Android基于Mob平台(SMSSDK)实现手机号登录


先看效果,如果是你想要的结果,那就跟着教程一步一步走。
在这里插入图片描述

1.Mob开发者注册流程

直接看官方平台教程Mob开发者注册流程

需要注意的几点
1.身份认证选择个人就可以
在这里插入图片描述
2.创建应用的时logo图片不一定需要128*128的(我是随便一张截图放上去的)

3.接入产品选择SMSSDK就好(其他选上也没有什么影响)
在这里插入图片描述

2.获取App Key和App Secre

1.点击刚创建的应用
在这里插入图片描述
2.查看App Key和App Secre 后续写代码要用(免费的每天只有十次哟)
每个应用对应不同的App Key和App Secre
在这里插入图片描述

3.在线下载SMSSDK

点击用户头像,SDK下载
在这里插入图片描述
在这里插入图片描述
获取到配置文件
在这里插入图片描述

4.把SMSSDK的SDK脚本添加到android studio中

1.在project的build.gradle添加步骤①的脚本代码
在这里插入图片描述

// 添加Mob Maven地址
maven {url “http://mvn.mob.com/android”}

// 注册MobSDK
classpath “com.mob.sdk:MobSDK:+”

2.在module的build.gradle添加步骤②的脚本代码
需要更改自己之前申请的appKey 和appSecret
在这里插入图片描述
添加代码时注意一点
如果你plugins下是id 'com.android.application'则需要将apply plugin: 'com.mob.sdk'跟改为id 'com.mob.sdk';如果是apply plugin: 'com.android.application’则不需要改动。原因是:Android studio不同版本导致的(具体是哪个版本分界我还没搞清楚,但是按照已有的对比还是可以辨别的)

apply plugin: ‘com.mob.sdk’

这里就要用前面申请的appKey 和appSecret

MobSDK {
appKey “替换为mob官方申请的appkey”
appSecret “替换为mob官方申请的appkey对应的appSecret”
SMSSDK {}
}

5.添加权限

具体权限说明如下
在这里插入图片描述
复制下面代码到AndroidManifest.xml

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

在这里插入图片描述

6.在MainActivity中写核心代码

可以参考官方平台文档SMSSDK快速集成或参考下面代码。

MainActivity

代码部分需要换AppKey和AppSecret
(建议用自己的AppKey和AppSecret,每天只有十次,如果要用我的请私信或下载demo)

package com.hnucm.demo;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.mob.MobSDK;

import org.json.JSONException;
import org.json.JSONObject;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class MainActivity extends AppCompatActivity {
    EventHandler handler;
    EditText editText;
    EditText editText2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //记得此处修改为你的AppKey和AppSecret
        MobSDK.init(this, "AppKey","AppSecret");
        editText=findViewById(R.id.editText);
        editText2=findViewById(R.id.editText2);
        handler = 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();
                                //MainActivity当前页面
                                //MainActivity2 登录成功跳转页面
                                Intent intent = new Intent(MainActivity.this,MainActivity2.class);
                                startActivity(intent);
                            }
                        });

                    }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();
                    Throwable throwable = (Throwable) data;
                    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,"提交错误信息", Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }
        };

        SMSSDK.registerEventHandler(handler);
    }

    //点击获取验证码
    public void play(View view) {
        //获取验证码
        String phone=editText.getText().toString();
        SMSSDK.getVerificationCode("86",phone);
    }

    //提交验证
    public void tijiao(View view) {
        String phone=editText.getText().toString();
        String number = editText2.getText().toString();
        SMSSDK.submitVerificationCode("86",phone,number);
    }
}


activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <EditText
        android:id="@+id/editText"
        android:layout_width="358dp"
        android:layout_height="66dp"
        android:layout_marginTop="52dp"
        android:hint="请输入手机号码"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <EditText
        android:id="@+id/editText2"
        android:layout_width="204dp"
        android:layout_height="63dp"
        android:layout_marginTop="44dp"
        android:hint="请输入手机验证码"
        app:layout_constraintStart_toStartOf="@+id/editText"
        app:layout_constraintTop_toBottomOf="@+id/editText" />

    <Button
        android:layout_height="54dp"
        android:layout_marginStart="32dp"
        android:layout_marginLeft="32dp"
        android:onClick="play"
        android:text="获取验证码"
        app:layout_constraintBottom_toBottomOf="@+id/editText2"
        app:layout_constraintStart_toEndOf="@+id/editText2"
        app:layout_constraintTop_toTopOf="@+id/editText2"
        app:layout_constraintVertical_bias="1.0"
        android:layout_width="wrap_content" />



    <Button
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_marginTop="60dp"
        android:onClick="tijiao"
        android:text="提交"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />
</androidx.constraintlayout.widget.ConstraintLayout>

跳转成功页面
MainActivity2

package com.hnucm.demo;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity2 extends AppCompatActivity {

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

activity_main2

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity2">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginLeft="36dp"
        android:layout_marginBottom="60dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintStart_toStartOf="@+id/textView" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="176dp"
        android:layout_height="70dp"
        android:layout_marginStart="116dp"
        android:layout_marginLeft="116dp"
        android:layout_marginBottom="328dp"
        android:text="跳转成功"
        android:textSize="32sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

7.效果展示

为了保护个人电话号码,添加了一行代码。
在这里插入图片描述
在这里插入图片描述

8.Demo下载

我写的demo已上传资源,免费下载后可以直接测试(含我的App Key和App Secre)。
Android基于Mob平台实现手机号登录Demo

如有错误,恳请指正。

如果对你有帮助,欢迎一键三连

要么努力,要么放弃。

原文链接:https://blog.csdn.net/weixin_46946002/article/details/117756265



所属网站分类: 技术文章 > 博客

作者:java小王子

链接:http://www.javaheidong.com/blog/article/222704/b4132452160f8da530de/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

24 0
收藏该文
已收藏

评论内容:(最多支持255个字符)