模仿一些网站在注册的时候要填写手机号码,然后点击获取激活码,将会产生一个激活码,用短信的方式发到注册者的手机,然后用户需要查看短信,将激活码填写在注册页面,有时间限制。若超时则需要重新发送。
strings.xml,其代码如下:
[html] view plain copy Hello World, SendregActivity! 发送验证码 注册 我已阅读并接受:《百度用户协议》color.xml,其代码如下:
[html] view plain copy #87CEEBmain.xml,其代码如下:
[html] view plain copy下面来看主Activity文件,其内容如下:下面来看Activity文件,其代码如下:
[html] view plain copy import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.os.CountDownTimer; import android.telephony.gsm.SmsManager; import android.telephony.gsm.SmsMessage; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class SendregActivity extends Activity { /** Called when the activity is first created. */ Button sendnumber,send; EditText phone,pwd,number; String temp=""; String phonenum=""; CheckBox agree; TimeCount timeco; TextView timecount; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sendnumber=(Button) findViewById(R.id.sendnumber); send=(Button) findViewById(R.id.send); phone=(EditText) findViewById(R.id.phone); pwd=(EditText) findViewById(R.id.paw); number=(EditText) findViewById(R.id.number);//激活码 agree=(CheckBox) findViewById(R.id.agree); timecount=(TextView) findViewById(R.id.counttime); timeco = new TimeCount(120000, 1000);//时间为120秒 sendnumber.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub for(int i=0;i0){ Pattern p = Pattern.compile("^((13[0-9])|(15[0-3])|(15[7-9])|(18[0,5-9]))\d{8}$"); m= p.matcher(mobiles); } else{ return false; } return m.matches(); } /* 定义一个倒计时的内部类 */ class TimeCount extends CountDownTimer { public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval);//参数依次为总时长,和计时的时间间隔 } @Override public void onFinish() {//计时完毕时触发 temp=""; Toast.makeText(SendregActivity.this, "超时,需要重新发送激活码!", Toast.LENGTH_LONG).show(); } @Override public void onTick(long millisUntilFinished){//计时过程显示 timecount.setText("倒计时:"+millisUntilFinished /1000+"秒"); } } }
程序要调用SmsManager来发送短信,因此还需要授予改程序发送短信的权限,也就是在AndroidManifest.xml文件中增加如下代码:
[html] view plain copy 补充:需要用户支付短信费用。