短信登录集成三步骤-sharedSdk
Posted 六月June June
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了短信登录集成三步骤-sharedSdk相关的知识,希望对你有一定的参考价值。
开放平台地址:http://www.mob.com/
---注册开发者账号
---添加应用,获取并记住app key,app secret,项目中后面要用
--下载sdk,按照开发文档配置应用
添加应用,获取app key 和app secret
注册用户--登录--进入后台--点击短信验证栏添加应用
添加完成后点击进入就到了应用页面
快速集成,下载sdk并配置工程
点击快速集成,就要到了文档页面:
http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3/
特别注意:项目中targetSdkVersion等于23,MINU的android6.0在拒绝授权会关闭APP,所以建议用户将targetSdkVersion设成22或以下。
然后点击下载SDK,解压
1.拷贝SMSSDK中对应文件到moudle的libs目录下并同步
打开SMSSDK ,打开HowToUse.txt文本文件,查看怎么配置工程:
在HowToUse.txt中可以看到
MobCommons.jar Mob 通用公共库 必须
MobTools.jar Mob 工具公共库 必须
SMSSDK-<version>.aar SMSSDK 核心 必须
SMSSDKGUI-<version>.aar SMSSDK GUI 开源库 可选
意思是:如果你希望用它给你的布局,你就配置SMSSDKGUI-<version>.aar,自己布局就不用配置最后一项依赖
2.在moudle的build.gradle中配置:
repositories
flatDir
dirs 'libs' //就是你放aar的目录地址
dependencies
compile name:'SMSSDK-2.1.4',ext:'aar'
3.按照文档添加权限和activity的配置.
权限:
<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" />
activity配置:
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize"/>
代码
权限校验: SMSUtil.checkPermission(this);
1.初始化:
SMSSDK.initSDK(this, APPKEY, APPSECRET, true);
2.在oncreate()注册短信回调
SMSSDK.registerEventHandler(eventHandler);
3.在OnDestroy()注销短信回调
SMSSDK.unregisterEventHandler(eventHandler);
4.获取验证码,后开始倒计时
SMSSDK.getVerificationCode("86", phone);
5.发送短信验证码
SMSSDK.submitVerificationCode("86", phone, code.trim());触发监听事件
我的布局:
activity示例:
public class Login2Activity extends Activity
public static final String TAG = "Login2Activity";
@InjectView(R.id.ib_back)
ImageButton ibBack;
@InjectView(R.id.tv_title)
TextView tvTitle;
@InjectView(R.id.et_phone)
EditText etPhone;
@InjectView(R.id.et_sms_code)
EditText etSmsCode;
@InjectView(R.id.bt_get_sms_code)
Button btGetSmsCode;
@InjectView(R.id.loadding)
ProgressBar loadding;
@InjectView(R.id.bt_confirm_login)
Button btConfirmLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login1);
ButterKnife.inject(this);
tvTitle.setText("登录界面");
//1.短信登录-初始化
SMSSDK.initSDK(this, "1cc9d1f42b5a8", "7b33d8e257eccec1e4be29afd0233955");
//2.注册短信回调
SMSSDK.registerEventHandler(eh);
@Override
protected void onDestroy()
super.onDestroy();
//3.注销短信回调
SMSSDK.unregisterEventHandler(eh);
//回调
EventHandler eh = new EventHandler()
@Override
public void afterEvent(int event, int result, Object data)
if (result == SMSSDK.RESULT_COMPLETE)
//回调完成
Log.e(TAG, "回调完成" + event + "---" + result + "---" + data);
if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)
//提交验证码成功
Log.e(TAG, "登录成功");
runOnUiThread(new Runnable() //注意:更新ui要在主线程中更新
@Override
public void run()
Toast.makeText(Login2Activity.this, "登录成功",
Toast.LENGTH_SHORT).show();
);
else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)
//获取验证码成功
Log.e(TAG, "获取验证码成功");
else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES)
//返回支持发送验证码的国家列表
Log.e(TAG, "返回支持发送验证码的国家列表");
else
((Throwable) data).printStackTrace();
;
@OnClick(R.id.ib_back, R.id.bt_get_sms_code, R.id.bt_confirm_login)
public void onClick(View view)
switch (view.getId())
case R.id.ib_back:
finish();
break;
case R.id.bt_get_sms_code:
//4.获取验证码
SMSSDK.getVerificationCode("86", etPhone.getText().toString().trim());
//5.开始倒计时
TimeUtil.readSencodChande(btGetSmsCode);//在获取验证码的按钮上显示倒计时
break;
case R.id.bt_confirm_login:
String phone = etPhone.getText().toString().trim();
String smsCode = etSmsCode.getText().toString().trim();
//6.提交短信验证码 //参数:国家代号,手机号,输入的验证码
SMSSDK.submitVerificationCode("86", phone, smsCode);
break;
倒计时工具类:
-创建handler和超时时间(超时间一般为60秒)
-用handler做延时任务,每隔1秒就更新剩余时间和作用控件的可用状态
-监听到验证成功之后也要记得handler消息
public class TimeUtil
static Handler handler = new Handler();
static int time = 60;//设置超时时间为60秒
/**
* 倒计时
* @param button 作用的控件
*/
public static void readSencodChande(final Button button)
handler.postDelayed(new Runnable()
@Override
public void run()
time -= 1;
if (time <= 0)
handler.removeCallbacksAndMessages(null);//移除用来做倒计时的handler消息
button.setEnabled(true);
button.setText("重新获取验证码");
else
//更新time
button.setEnabled(false); //设置button不可用
button.setText(time + "s");
handler.postDelayed(this, 1000);//继续发消息
, 1000);
最后再次提醒:
1.建议将targetSdkVersion设成22或以下。
2.EventHandler回调运行在子线程中,所以不要在里面更新ui
以上是关于短信登录集成三步骤-sharedSdk的主要内容,如果未能解决你的问题,请参考以下文章