android怎么实现手机号登录(2020最新版超详细Mob平台+SMSSDK)?


虽然mob平台可以实现手机验证码登录 ,但是有一个弊端 每天只能发送10条验证码。
建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现。相信我一定可以成功的。

想通过android实现手机推送功能,可以看这篇文章android教你怎么轻松实现手机推送功能,一步一步教你Mob+MobPush实现推送功能?

android如何实现qq登陆和qq分享,2021超详细mob平台图解教程?

第一步:注册mob平台账号

因为我已经注册了mob平台了,也没有多余的手机号,就不详细说明了,注册还是比较简单的。下面附上mob平台的链接:
mob平台链接:https://www.mob.com/

第二步:在mob平台配置SMSSDK环境。

1.点击下图红色圆圈处的产品中心。

在这里插入图片描述

2.点击立即进入。

在这里插入图片描述

3.点击创建应用。

在这里插入图片描述

4.同意隐私服务。

在这里插入图片描述

5.创建应用。

记得图片设置为128px*128px
在这里插入图片描述
如果不知道怎么设置图片大小,可以在网上搜索一下如图FastStone编辑器,他的安装包我不知道放那里去了,可以自己去网上找一下,不过window自带的画图软件好像也可以设置大小(我也不是很不确定)。废话不多说,步入正题。
在这里插入图片描述

6.点击下图红色圆圈接入接口。

在这里插入图片描述

7.选择SMSSDK。

选择如图中的SMSSDK(秒验这个不知道需不需要添加,我以前是添加的,不过没什么影响,加了总比没加好,反正不碍事)。
在这里插入图片描述

8.获取你的·App KeyApp Secret

建议用自己的,因为只能每一个创建的应用只能发送10条信息。
在这里插入图片描述

9.点击SDK下载。

如图所示
在这里插入图片描述

10.下载SMSSDK。

步骤如图所示。
在这里插入图片描述
此处的下载不是通过手动下载,而是通过通过代码下载,这样简单点。
在这里插入图片描述

第三步:把SMSSDK的代码添加到android

1.新建一个项目。

在这里插入图片描述

2.在AndroidManifest中加入权限。

如图所示:
在这里插入图片描述
权限代码如下:

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

3.在Project的builder.grale处加入代码。

如图所示
在这里插入图片描述
代码如下:

classpath "com.mob.sdk:MobSDK:2018.0319.1724"
maven { url 'https://jitpack.io' }

4.在Moudule中builder.gradle处加入代码

记得修改为你自己的apppKey和appSecret
如果你的是android studio4.0,4.1加入如下图代码:
在这里插入图片描述

如果你是其他版本,加入下图格式即可,只要修改为apply plugin:'com.mob.sdk'
在这里插入图片描述

代码如下,根据你的版本选择代码:
android studio4.0.4.1版本

id 'com.mob.sdk'

其他版本

apply plugin:'com.mob.sdk'

MobSDK版本代码如下,记得修改为你自己的appKey和appSecret,不然可能会次数不够:

MobSDK {
    appKey "31d18b327d099"     //修改为你自己的appKey
    appSecret "5e6a2e16f58f9c1e374acf77abb70b70"    //修改为你自己的appSecret
    SMSSDK {}
}

5.编写MainActivity文件。

主要代码如下:
Activity主要代码:

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 editText1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MobSDK.init(this, "31d18b327d099","5e6a2e16f58f9c1e374acf77abb70b70");       //记得此处修改为你的AppKey和AppSecret
        editText=findViewById(R.id.yanzhengma);
        editText1=findViewById(R.id.phone);
        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();
                                Intent intent = new Intent(MainActivity.this,Main2Activity.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 tijiao(View view) {
        String number = editText.getText().toString();
        String phone=editText1.getText().toString();
        SMSSDK.submitVerificationCode("86",phone,number);
    }
    
    //点击发送验证码
    public void play(View view) {
        //获取验证码
        String phone=editText1.getText().toString();
        SMSSDK.getVerificationCode("86",phone);
    }
}

xml的主要代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/phone"
        android:inputType="numberPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号码"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送短信验证码"
        android:onClick="play"
        />
    <EditText
        android:id="@+id/yanzhengma"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机验证码"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="tijiao"
        android:text="提交"
        />
</LinearLayout>

如果你感觉代码不够的话,我附上所有代码项目地址:

csdn地址设置为0积分可自由下载:https://download.csdn.net/download/qq_45137584/13737566

github地址:
有时间在传

第四步:看一下项目效果。

因为为了保护隐私,我把手机号输入框设置为了密码的形式。但是不会影响我们观看效果。这个测试可以在手机模拟器上运行,只需要输入手机号即可,不一定要输入是你注册mob的那个手机号。效果如下:
在这里插入图片描述
因为我输入的是本机的号码,所有发送的验证码不发送到手机模拟器上面,而且手机模拟器也没有手机号码,所有下面附上本机接收验证码截图,以验证真实性。
在这里插入图片描述
恭喜你,需要的效果已经完成,如果你遇到什么问题可以提出来,因为毕竟我一个人也考虑不到这个情况。
功能虽然简单,但是步骤并不少,只要细心肯定是可以实现的。

  • 23
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
Android手机可以通过使用移动端一键登录SDK实现手机号一键登录。以下是一些常见的移动端一键登录SDK: 1. 云片移动端一键登录SDK ```java // 初始化 CloudAuth.init(context, appid, appkey); // 请求授权页 CloudAuth.requestToken(activity, new CloudAuthCallback() { @Override public void onComplete(CloudAuthUser user) { // 登录成功,获取用户信息 String phone = user.getPhone(); String uid = user.getUid(); String token = user.getToken(); // TODO: 处理用户信息 } @Override public void onError(CloudAuthException e) { // 登录失败,处理异常 } @Override public void onCancel() { // 取消登录 } }); ``` 2. Mob移动端一键登录SDK ```java // 初始化 MobSDK.init(context, appkey, appsecret); // 请求授权页 OnekeyLoginManager.getInstance().setAuthThemeConfig(new AuthThemeConfig.Builder() .setStatusBarColor(Color.parseColor("#FFFFFF")) .setNavColor(Color.parseColor("#FFFFFF")) .setNavText("一键登录") .setNavTextColor(Color.parseColor("#333333")) .setLogoImgPath("logo.png") .setLogoWidth(100) .setLogoHeight(100) .setLogoOffsetY(50) .setLogoOffsetX(0) .setLogoHidden(false) .setSloganHidden(false) .setSloganText("一键登录,畅享无限") .setSloganTextColor(Color.parseColor("#666666")) .setSloganOffsetY(180) .setSloganOffsetX(0) .setNumberColor(Color.parseColor("#333333")) .setNumberSize(18) .setNumberOffsetY(230) .setNumberOffsetX(0) .setSwitchText("其他方式登录") .setSwitchTextColor(Color.parseColor("#666666")) .setSwitchOffsetY(280) .setSwitchOffsetX(0) .setLogBtnText("本机号码一键登录") .setLogBtnTextColor(Color.parseColor("#FFFFFF")) .setLogBtnImgPath("login_btn_bg.png") .setLogBtnWidth(300) .setLogBtnHeight(50) .setLogBtnOffsetY(350) .setLogBtnOffsetX(0) .setPrivacyState(true) .setPrivacyOffsetY(420) .setPrivacyOffsetX(0) .setPrivacyText("登录即同意《用户协议》和《隐私政策》") .setPrivacyTextColor(Color.parseColor("#666666")) .setPrivacyProtocol("https://www.mob.com/about/policy") .setPrivacyProtocolColor(Color.parseColor("#666666")) .setPrivacyProtocol2("https://www.mob.com/about/terms") .setPrivacyProtocol2Color(Color.parseColor("#666666")) .setPrivacyWithBookTitleMark(false) .setPrivacyCheckboxHidden(false) .setPrivacyCheckboxSize(16) .setPrivacyCheckboxOffsetY(420) .setPrivacyCheckboxOffsetX(0) .setPrivacyCheckboxResId(R.drawable.mob_auth_privacy_checkbox_selector) .setPrivacyCheckboxDefaultState(true) .setPrivacyProtocolHighlightColor(Color.parseColor("#FF4081")) .setPrivacyProtocol2HighlightColor(Color.parseColor("#FF4081")) .build()); OnekeyLoginManager.getInstance().setAuthListener(new OneKeyLoginCallback() { @Override public void onLogin(String phone, String token) { // 登录成功,获取用户信息 String uid = OnekeyLoginManager.getInstance().getUid(); // TODO: 处理用户信息 } @Override public void onError(String errorMsg) { // 登录失败,处理异常 } @Override public void onCancel() { // 取消登录 } }); OnekeyLoginManager.getInstance().login(); ``` 3. 一键登录SDK ```java // 初始化 OneKeyLogin.getInstance().init(context, appid, appkey); // 请求授权页 OneKeyLogin.getInstance().requestToken(activity, new OneKeyLoginCallback() { @Override public void onLogin(String phone, String token) { // 登录成功,获取用户信息 String uid = OneKeyLogin.getInstance().getUid(); // TODO: 处理用户信息 } @Override public void onError(String errorMsg) { // 登录失败,处理异常 } @Override public void onCancel() { // 取消登录 } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值