极光推送短信服务有两个功能:正常(普通)的短信验证+语音验证
这里我只测试普通短信验证的流程,我的手机有时候可以Toast通知,有时候不行,所以我们直接用AS的日志输出进行调试
(1)首先在极光推送官网注册账号--创建应用--获取AppKey--(最主要的是你有官网的短信服务(我是免费申请的,官网很给力,给我送了20条用于免费测试使用))
(2)然后解压SDK将libs下的xxxx.jar包复制到你项目的libs下,并进行依赖
compile files('libs/jsms_android-1.1.0.jar')
(3)在AndroidManifest文件中
添加权限:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>注册页面:
<!-- 普通短信验证页面 --> <activity android:name=".CommonSMSActivity" android:label="@string/app_name"> </activity> <!-- 语音短信验证页面 --> <activity android:name=".VoiceSMSActivity" android:label="@string/app_name"> </activity>设置AppKey:
<!-- 设置您的应用AppKey --> <meta-data android:name="JPUSH_APPKEY" android:value="您的AppKey"/>(4)新创建一个BaseApplication,初始化短信服务的配置
public class BaseApplication extends Application{ @Override public void onCreate() { super.onCreate(); SMSSDK.getInstance().initSdk(this); SMSSDK.getInstance().setIntervalTime(30*1000); } }(5)主代码:
package com.gm.smsdemo; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.util.Timer; import java.util.TimerTask; import cn.jpush.sms.SMSSDK; import cn.jpush.sms.listener.SmscheckListener; import cn.jpush.sms.listener.SmscodeListener; /** * 正常(普通)短信验证 * 需要注意的是要在规定的时间内获取到短信验证码并且完成验证才算成功! * */ public class CommonSMSActivity extends Activity { private EditText editText; private Button btn; private EditText codeText; private Button signBtn; private TimerTask timerTask; private Timer timer; private int timess; private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); progressDialog = new ProgressDialog(this); editText = (EditText) findViewById(R.id.edt_code); codeText = (EditText) findViewById(R.id.edt_write_code); btn = (Button) findViewById(R.id.btn); signBtn = (Button) findViewById(R.id.btn_sign); // 获取验证码 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String phoneNum = editText.getText().toString(); if(TextUtils.isEmpty(phoneNum)){ Toast.makeText(CommonSMSActivity.this, "请输入手机号码", Toast.LENGTH_SHORT).show(); Log.e("执行", "请输入手机号码!"); return; } btn.setClickable(false); // 开始倒计时 startTimer(); SMSSDK.getInstance().getSmsCodeAsyn(phoneNum, 1+"", new SmscodeListener() { @Override public void getCodeSuccess(final String uuid) { Toast.makeText(CommonSMSActivity.this,uuid,Toast.LENGTH_SHORT).show(); Log.e("执行", "获取验证码成功!"); } @Override public void getCodeFail(int errCode, final String errmsg) { //失败后停止计时 stopTimer(); Toast.makeText(CommonSMSActivity.this,errmsg,Toast.LENGTH_SHORT).show(); Log.e("执行", "获取验证码失败,请重新获取!"); } }); } }); //开始验证 signBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = codeText.getText().toString(); String phoneNum = editText.getText().toString(); if(TextUtils.isEmpty(code)){ Toast.makeText(CommonSMSActivity.this,"请输入验证码",Toast.LENGTH_SHORT).show(); Log.e("执行", "验证前请确保您已经输入验证码了!"); return; } if(TextUtils.isEmpty(phoneNum)){ Toast.makeText(CommonSMSActivity.this,"请输入手机号码",Toast.LENGTH_SHORT).show(); Log.e("执行", "验证前请确保您有输入手机号"); return; } progressDialog.setTitle("正在验证..."); progressDialog.show(); SMSSDK.getInstance().checkSmsCodeAsyn(phoneNum, code, new SmscheckListener() { @Override public void checkCodeSuccess(final String code) { if(progressDialog!=null&&progressDialog.isShowing()){ progressDialog.dismiss(); } Toast.makeText(CommonSMSActivity.this,code,Toast.LENGTH_SHORT).show(); Log.e("执行", "验证成功!"); } @Override public void checkCodeFail(int errCode, final String errmsg) { if(progressDialog!=null&&progressDialog.isShowing()){ progressDialog.dismiss(); } Toast.makeText(CommonSMSActivity.this,errmsg,Toast.LENGTH_SHORT).show(); Log.e("执行", "验证失败!"); } }); } }); } private void startTimer(){ timess = (int) (SMSSDK.getInstance().getIntervalTime()/1000); btn.setText(timess+"s"); if(timerTask==null){ timerTask = new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { timess--; if(timess<=0){ stopTimer(); return; } btn.setText(timess+"s"); } }); } }; } if(timer==null){ timer = new Timer(); } timer.schedule(timerTask, 1000, 1000); } private void stopTimer(){ if(timer!=null){ timer.cancel(); timer=null; } if(timerTask!=null){ timerTask.cancel(); timerTask=null; } btn.setText("重新获取"); btn.setClickable(true); } }
(6)运行你的程序进行测试吧!官网文档也都有,很简单的!