本人通过mob官网进行学习此demo此官网也可以进行操作的三登录功能
进入官网之后的路或者注册账号,进行下载sdk
下载完成之后我们解压得到几个文件,里面我们有几个会用到的
我们将后4个包进行添加到工程的lib里面进行编译即可使用;
接下来就是各种操作进行实现功能,下面是在build_gradle面进行配置(必须要进行的一个操作)
repositories{
flatDir{
dirs 'libs' //就是你放aar的目录地址
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile name:'SMSSDK-3.0.0',ext:'aar'
compile name:'SMSSDKGUI-3.0.0',ext:'aar'
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
紧接着就是在清单文件里面进行配置
//我们需要用到的权限
<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
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
//{这个是在mob官网里面创建应用获得到的appkey} android:windowSoftInputMode="stateHidden|adjustResize"/>
<meta-data android:name="Mob-AppKey" android:value="203480017e7a1"/>
//{这个是在mob官网里面创建应用获得到的appcreat}
<meta-data android:name="Mob-AppSecret" android:value="5399c9fbbfaa4a92360885c1bef9b1a0{这个是在mob官网里面创建应用获得到的}"/>
然后是我的布局文件.xml
<EditText
android:id="@+id/phone"
android:hint="请输入手机号"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/yzm"
android:hint="输入验证码"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/huoqu_btn"
android:layout_weight="1"
android:layout_width="0dp"
android:onClick="onClick"
android:layout_height="wrap_content"
android:text="获取验证码"/>
</LinearLayout>
<Button
android:id="@+id/btn"
android:text="登录"
android:onClick="onClick"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
最后进行展示的就我集成好的代码文件:请看下面
package renchaofang.bawei.com.smsstudy;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import static cn.smssdk.SMSSDK.getSupportedCountries;
import static cn.smssdk.SMSSDK.getVerificationCode;
import static cn.smssdk.SMSSDK.submitVerificationCode;
public class MainActivity extends AppCompatActivity{
private final String TAG="--MainActivity--";
private EventHandler eventHandler;
private EditText phone;
private EditText yzm;
private Button button1;
private Button button2;
private EventHandler eh;
private boolean isChange;
//控制按钮样式是否改变
private boolean tag = true;
//每次验证请求需要间隔60S
private int i=60;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.arg1) {
case 0:
//客户端验证成功,可以进行注册,返回校验的手机和国家代码phone/country
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
case 1:
//获取验证码成功
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
case 2:
//返回支持发送验证码的国家列表
Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
}
}
};
private String yan;
private String iphone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//找到资源控件
init();
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) {
//提交验证码成功
Message msg = new Message();
msg.arg1 = 0;
msg.obj = data;
handler.sendMessage(msg);
Log.d(TAG, "提交验证码成功");
} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
Message msg = new Message();
//获取验证码成功
msg.arg1 = 1;
msg.obj = "获取验证码成功";
handler.sendMessage(msg);
Log.d(TAG, "获取验证码成功");
} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
Message msg = new Message();
//返回支持发送验证码的国家列表
msg.arg1 = 2;
msg.obj = "返回支持发送验证码的国家列表";
handler.sendMessage(msg);
Log.d(TAG, "返回支持发送验证码的国家列表");
}
} else {
Message msg = new Message();
//返回支持发送验证码的国家列表
msg.arg1 = 3;
msg.obj = "验证失败";
handler.sendMessage(msg);
Log.d(TAG, "验证失败");
((Throwable) data).printStackTrace();
}
}
};
button1.setClickable(false);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iphone = phone.getText().toString();
if(iphone.equals("")){
Toast.makeText(MainActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show();
}else {
//填写了手机号码
if(isMobileNO(iphone)){
//如果手机号码无误,则发送验证请求
button1.setClickable(true);
changeBtnGetCode();
getSupportedCountries();
getVerificationCode("86", iphone);
}else{
//手机号格式有误
Toast.makeText(MainActivity.this,"手机号格式错误,请检查",Toast.LENGTH_SHORT).show();
}
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取 得到验证码
yan = yzm.getText().toString();
if (yan.equals("")){
Toast.makeText(MainActivity.this,"验证码不能为空",Toast.LENGTH_SHORT).show();
}else{
//填写了验证码,进行验证
submitVerificationCode("86", iphone, yan);
}
}
});
SMSSDK.registerEventHandler(eh); //注册短信回调
}
public void init(){
phone = (EditText)findViewById(R.id.phone);
yzm = (EditText)findViewById(R.id.yzm);
button1 = (Button)findViewById(R.id.huoqu_btn);
button2 = (Button)findViewById(R.id.btn);
}
private void changeBtnGetCode() {
Thread thread = new Thread() {
@Override
public void run() {
if (tag) {
while (i > 0) {
i--;
//如果活动为空
if (MainActivity.this == null) {
break;
}
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
button1.setText("获取验证码(" + i + ")");
button1.setClickable(false);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
tag = false;
}
i = 60;
tag = true;
if (MainActivity.this != null) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
button1.setText("获取验证码");
button1.setClickable(true);
}
});
}
}
};
thread.start();
}
private boolean isMobileNO(String phone) {
/*
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
联通:130、131、132、152、155、156、185、186
电信:133、153、180、189、(1349卫通)
总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
*/
String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
if (TextUtils.isEmpty(phone)) return false;
else return phone.matches(telRegex);
}
}
END…..
加油。。。。。!