短信工具类 SmsUtil

只需要 服务器 获取验证码接口
布局中 设置一个 输入框 一个按钮 就可以 获取验证码后倒计时 并将短信自动填写到输入框

/**
 * 获取验证码工具
 * 功能:获取验证码 按钮倒计时, 自动填写验证码
 * Created by my on 2016/4/21.
 */
public class VcodeUtils {
    /**
     * 获取验证码
     *
     * @param
     */
    private Button mBt_vcode;
    private EditText mEtVcode;
    private Activity acitvity;
    private SMSReceiver mSmsReceiver;


    /**
     * @param mBt_vcode 倒计时的button
     * @param acitvity
     */
    public VcodeUtils(Button mBt_vcode, Activity acitvity,EditText mEtVcode ) {
        this.mBt_vcode = mBt_vcode;
        this.acitvity = acitvity;
        this.mEtVcode=mEtVcode;
        registSmsReciver();
    }
    private CountDownTimer timer = new CountDownTimer(30000, 1000) {

        @Override
        public void onTick(long millisUntilFinished) {
            //  btVcode.setText("重新发送(" + msg.arg1 + ")");
            mBt_vcode.setEnabled(false);
            mBt_vcode.setTextColor(Color.GRAY);
            mBt_vcode.setText((millisUntilFinished / 1000) + "秒后可重发");
        }

        @Override
        public void onFinish() {
            mBt_vcode.setEnabled(true);
            mBt_vcode.setTextColor(Color.parseColor("#ff4e8de3"));
            mBt_vcode.setText("获取验证码");
        }
    };
    public void getVcode(String url) {
        final Dialog progressDialog = CustomProgress.show(acitvity, "加载中", true, null);
        OkHttpUtils.get()
                .url(url)
                .addHeader("DeviceID", MyApplication.DeviceID)
                .build().execute(new StringCallback() {
            @Override
            public void onError(Call call, Exception e) {
                if (progressDialog != null) {
                    progressDialog.dismiss();
                }
                Toast.makeText(acitvity, "获取验证码失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(String response) {
                if (progressDialog != null) {
                    progressDialog.dismiss();
                }
                String result = StreamUtils.decodeUnicode(response);
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(result);
                    String code = jsonObject.getString("code");
                    if (code.equals("200")) {
                        Toast.makeText(acitvity, "获取验证码成功", Toast.LENGTH_SHORT).show();
                        timer.start();
                    } else {
                        Toast.makeText(acitvity, "获取验证码失败", Toast.LENGTH_SHORT).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });

    }
    public static boolean checkMobile(String mobile) {
        Pattern pattern = Pattern.compile("^1\\d{10}");
        Matcher matcher = pattern.matcher(mobile);
        if (matcher.find()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 注册短信广播接收者
     */
    private  void registSmsReciver() {
        mSmsReceiver = new SMSReceiver();
        mSmsReceiver.setMessageListener(new SMSReceiver.MessageListener() {
            @Override
            public void onReceived(String cont) {
                mEtVcode.setText(cont);
            }
        });
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        intentFilter.setPriority(1000);
        acitvity.registerReceiver(mSmsReceiver,intentFilter);//注册
    }

    /**
     * 必须在合适位置调用此方法  解绑广播接收者
     * 可以再 onDestroy() 中使用该函数
     */
    public   void unregisterReceiver(){
        if(mSmsReceiver!=null){
            acitvity.unregisterReceiver(mSmsReceiver);
            mSmsReceiver=null;
        }
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中的阿里云服务官方文档,您可以通过以下步骤来创建一个阿里云发送工具类: 1. 开通阿里云账号并登录,然后申请一个子权限账户,并授予该账户服务管理的权限。 2. 在服务控制台中申请签名和模板,具体的规则可以参考审核标准。 3. 根据接收对象的不同,选择相应的签名和模板。 4. 调用阿里云服务的接口来发送。 在编写工具类时,您可以使用引用\[2\]中提供的阿里云依赖,即aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi。您可以在您的项目中添加这两个依赖,并按照官方文档提供的示例代码来调用阿里云服务的接口。 如果您需要同时向多个不同的手机号码发送不同签名的,可以参考引用\[3\]中的文档,该文档提供了相关的参考息。 请注意,以上是一个简要的概述,具体的实现细节和代码编写需要根据您的具体需求和项目环境进行调整。建议您参考阿里云服务的官方文档和示例代码来完成您的工具类的编写。 #### 引用[.reference_title] - *1* *3* [阿里云服务工具类](https://blog.csdn.net/qq_40147276/article/details/93724745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【阿里云】服务 无认证 测试版本 附带发送工具类](https://blog.csdn.net/SPX113/article/details/125862420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值