使用的shareSdk
首先,可定是先注册,然后创建应用获取到appkey 和 secret
界面我们自己定义,可以参考sharesdk的相关文档
http://wiki.mob.com/sms-android-%E6%97%A0gui%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8/
第一步:先把sdk中的所需要使用的包拿过来。
第二步:添加依赖
第三步:在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" />
在application标签中添加固定格式的代码,不要修改
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize"/>
布局文件:
<?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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.johnwharton.sendsmsnogui.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入电话号码" android:id="@+id/et_main" android:background="@null"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取验证码" android:onClick="clickView" android:id="@+id/btn_get_sms_code"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="显示验证码" android:id="@+id/et_show" android:textColor="@color/colorAccent"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册" android:id="@+id/btn_sign" android:onClick="clickView"/></LinearLayout>
主程序代码:
package com.johnwharton.sendsmsnogui;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.EditText;import android.widget.Toast;import java.util.HashMap;import java.util.regex.Matcher;import java.util.regex.Pattern;import cn.smssdk.EventHandler;import cn.smssdk.SMSSDK;public class MainActivity extends AppCompatActivity { private EditText et_main; private EditText et_show; private Context mContext = this; private String phone = ""; private static final int SUBMIT= 0; private static final int GET= 1; private static final int COUNTRIES= 2; private EventHandler eh; private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case SUBMIT: DefineToast("注册成功"); break; case GET: DefineToast("获取验证码成功"); break; case COUNTRIES: //获取国家列表与电话号码 Bundle bundle = (Bundle) msg.obj; DefineToast(bundle.getString("country") + "___" + bundle.getString("phone")); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } /** * initSDK方法是短信SDK的入口,需要传递您从ShareSDK应用管理后台中注册的应用AppKey和AppSecrete,如果填写错误,后续的操作都将不能进行。 */ private void initView() { et_main = (EditText) findViewById(R.id.et_main); et_show = (EditText) findViewById(R.id.et_show); SMSSDK.initSDK(mContext,"16868d56de3ff","8e555367d52192d92319a90cfc4bc608"); 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) { //提交验证码成功 mHandler.sendEmptyMessage(0); }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功 mHandler.sendEmptyMessage(1); }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ //返回支持发送验证码的国家列表 @SuppressWarnings("unchecked") HashMap<String,Object> phoneMap = (HashMap<String, Object>) data; String country = (String) phoneMap.get("country"); String phone = (String) phoneMap.get("phone"); Bundle bundle = new Bundle(); bundle.putString("country",country); bundle.putString("phone",phone); Message msg = Message.obtain(); msg.obj = bundle; msg.what = 2; mHandler.sendMessage(msg); } }else{ ((Throwable)data).printStackTrace(); } } }; SMSSDK.registerEventHandler(eh); //注册短信回调 } public void clickView(View view) { switch (view.getId()){ case R.id.btn_get_sms_code: String string = et_main.getText() + ""; //如果是电话号码,就设置到电话中 if (isMatchMobilLength(string,11) && isMobilNo(string)){ //发送成功后,回调EventHandler 的afterEvent方法(event == SMSSDK.EVENT_GET_VERIFICATION_CODE)。 //获取验证码 SMSSDK.getVerificationCode("86", string); }else { Toast.makeText(mContext,"输入电话号码有误",Toast.LENGTH_SHORT).show(); } break; case R.id.btn_sign: String show = et_show.getText() + ""; if (!TextUtils.isEmpty(show)){// 验证成功后,回调EventHandler 的afterEvent方法(event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)。 SMSSDK.submitVerificationCode("86",phone,show); } break; } } public boolean isMatchMobilLength(String phone,int length){ if (!TextUtils.isEmpty(phone)){ return phone.length() == length; } return false; } public boolean isMobilNo(String phone){ String repexp = "[1][358]\\d{9}"; Pattern pattern = Pattern.compile(repexp); Matcher matcher = pattern.matcher(phone); return matcher.matches(); } public void DefineToast(String str){ Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show(); }}