标题
1:功能类:
public class Register extends Activity {
private String tag_json_obj = "json_obj_req"
private EditText phoneText
private EditText confirmPassword
private Button Register
private Context sContext
private CheckBox checkBox
private TextView user_terms
private TextView privacy_clause
private Button code
private EditText codeText
public static final int MSG_RECEIVED_CODE = 1
private SmsObserver mObserver
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == MSG_RECEIVED_CODE) {
String code = (String)msg.obj
codeText.setText(code)
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_register)
//动态获取短信验证码
mObserver = new SmsObserver(Register.this, mHandler)
Uri uri = Uri.parse("content://sms")
getContentResolver().registerContentObserver(uri, true, mObserver)
Register = (Button) findViewById(R.id.submit_register)
phoneText = (EditText) findViewById(R.id.phoneText)
codeText = (EditText) findViewById(R.id.codeText)
checkBox = (CheckBox) findViewById(R.id.agreement)
user_terms = (TextView) findViewById(R.id.user_terms)
privacy_clause = (TextView) findViewById(R.id.privacy_clause)
user_terms.setOnClickListener(listener1)
privacy_clause.setOnClickListener(listener2)
confirmPassword = (EditText) findViewById(R.id.confirmText)
Random r = new Random()
final Integer i1 = r.nextInt(99999 - 0) + 99999
//int random=(int)(Math.random()*1000000)
code = (Button) findViewById(R.id.code)
//验证码
code.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (phoneText.getText().length() < 11) {
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("手机号码错误")
aDialog.setMessage("请核对您的手机号码!")
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "返回",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.setIcon(R.drawable.login_48)
aDialog.show()
} else {
RequestQueue queue = Volley.newRequestQueue(Register.this)
StringRequest myReq = new StringRequest(Request.Method.POST,
"http://www.jcpeixun.com/ashx/api/sendMRandom.aspx",
createMyReqSuccessListener(),
createMyReqErrorListener()) {
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<String, String>()
params.put("mobile", phoneText.getText().toString())
params.put("content", "您的验证码为" + i1.toString())
params.put("code", i1.toString())
return params
}
}
AppController.getInstance().addToRequestQueue(myReq, tag_json_obj)
String url = MyURLEncoder.encodeURL("http://www.jcpeixun.com/ashx/api/sendMRandom.aspx?mobile=" + phoneText.getText() + "&content=您的验证码为" + i1.toString() + "&code=" + i1.toString())
Log.d("codeurl", url)
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("code:", response.toString())
// Display the first 500 characters of the response string.
if (response.equalsIgnoreCase("1")) {
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("发送验证码")
aDialog.setMessage("已经向您的手机发送验证码!")
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.setIcon(R.drawable.login_48)
aDialog.show()
} else if (response.equalsIgnoreCase("0")) {
Toast.makeText(Register.this.getApplicationContext(), "错误", Toast.LENGTH_LONG).show()
} else if (response.equalsIgnoreCase("-5")) {
Toast.makeText(Register.this.getApplicationContext(), "异常", Toast.LENGTH_LONG).show()
} else if (response.equalsIgnoreCase("-2")) {
Toast.makeText(Register.this.getApplicationContext(), "参数有误", Toast.LENGTH_LONG).show()
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(Register.this.getApplicationContext(), "请检测网络连接", Toast.LENGTH_LONG).show()
}
})
//queue.add(stringRequest)
}
}
})
Register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!checkBox.isChecked()){
Toast.makeText(getApplication(),"亲,服务条款未同意哦!",Toast.LENGTH_SHORT).show()
}else if (confirmPassword.equals(null)) {
Toast.makeText(getApplication(), "密码不能为空", Toast.LENGTH_SHORT).show()
} else if (i1.toString().equalsIgnoreCase(codeText.getText().toString())) {
final String url = getResources().getString(R.string.base_api) + "Register.aspx"
StringRequest myReq = new StringRequest(Request.Method.POST,
url,
createMyReqSuccessListener2(),
createMyReqErrorListener2()) {
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<String, String>()
params.put("utel", phoneText.getText().toString())
params.put("upass", confirmPassword.getText().toString())
return params
}
}
AppController.getInstance().addToRequestQueue(myReq, tag_json_obj)
} else {
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("错误")
aDialog.setMessage("验证码有误!")
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "返回",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.show()
}
}
})
ImageButton goBack = (ImageButton) findViewById(R.id.goBack)
goBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
redirectTo()
}
})
}
//调到登陆界面
private void redirectTo() {
Intent intent = new Intent(this, Login.class)
startActivity(intent)
finish()
}
//调到主页面
private void redirectToMain() {
Intent intent = new Intent(this, MyActivity.class)
startActivity(intent)
finish()
}
private Response.Listener<String> createMyReqSuccessListener() {
return new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equalsIgnoreCase("1")) {
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("发送验证码")
aDialog.setMessage("已经向您的手机发送验证码!")
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.setIcon(R.drawable.login_48)
aDialog.show()
} else if (response.equalsIgnoreCase("0")) {
Toast.makeText(Register.this.getApplicationContext(), "错误", Toast.LENGTH_LONG).show()
} else if (response.equalsIgnoreCase("-5")) {
Toast.makeText(Register.this.getApplicationContext(), "异常", Toast.LENGTH_LONG).show()
} else if (response.equalsIgnoreCase("-2")) {
Toast.makeText(Register.this.getApplicationContext(), "参数有误", Toast.LENGTH_LONG).show()
} else if (response.equalsIgnoreCase("-1")) {
Toast.makeText(Register.this.getApplicationContext(), "该号码已注册", Toast.LENGTH_LONG).show()
}
}
}
}
private Response.ErrorListener createMyReqErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("fail:", error.toString())
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle(getResources().getString(R.string.error))
aDialog.setMessage(getResources().getString(R.string.network_error))
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getResources().getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.setIcon(R.drawable.login_48)
aDialog.show()
}
}
}
private Response.Listener<String> createMyReqSuccessListener2() {
return new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("success", response)
Log.d("code:", response.toString())
// Display the first 500 characters of the response string.
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("注册成功")
aDialog.setMessage("您已经注册成功!")
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getResources().getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
String url2 = "http://www.jcpeixun.com/app_client_api/login.aspx"
url2 = url2.concat("?username=")
url2 = url2.concat(phoneText.getText().toString())
url2 = url2.concat("&pwd=")
url2 = url2.concat(confirmPassword.getText().toString())
final String url = url2
Log.d("url:", url)
// prepare the Request
String tag_json_obj = "json_obj_req"
final ProgressDialog pDialog = new ProgressDialog(Register.this)
pDialog.setMessage("正在登陆...")
pDialog.show()
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("response", response.toString())
pDialog.dismiss()
try {
String indicator = response.getString("error")
if (indicator.equalsIgnoreCase("0")) {
//登陆成功
//添加个人信息
SharedPreferences sp = getSharedPreferences("User", 0)
SharedPreferences.Editor Ed = sp.edit()
Ed.putString("username", response.getString("username"))
Ed.putString("uid", response.getString("uid"))
Ed.putString("grade", response.getString("grade"))
Ed.putString("authCourse", response.getString("authCourse"))
Ed.putString("QQ", response.getString("QQ"))
Ed.putString("password", confirmPassword.getText().toString())
Ed.putString("balance", response.getString("balance"))
Ed.putString("img", response.getString("img"))
Ed.commit()
redirectToMain()
//登陆成功填写资料
Intent intent = new Intent(Register.this, User_information.class)
startActivity(intent)
Toast.makeText(getApplicationContext(), "注册成功,请填写资料", Toast.LENGTH_SHORT).show()
} else {
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle("错误")
aDialog.setMessage(url)
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "好",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.show()
}
} catch (JSONException e) {
e.printStackTrace()
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("error", "Error: " + error.getMessage())
// hide the progress dialog
pDialog.dismiss()
}
})
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj)
}
})
aDialog.show()
}
}
}
private Response.ErrorListener createMyReqErrorListener2() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("fail:", error.toString())
AlertDialog aDialog = new AlertDialog.Builder(Register.this).create()
aDialog.setTitle(getResources().getString(R.string.error))
aDialog.setMessage(getResources().getString(R.string.network_error))
aDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getResources().getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss()
}
})
aDialog.show()
}
}
}
@Override
protected void onPause() {
super.onPause()
getContentResolver().unregisterContentObserver(mObserver)
}
@Override
protected void onResume() {
super.onResume()
MobclickAgent.onEvent(sContext, "0x003")
StatService.onEventDuration(Register.this, "0x0016", "注册", 100)
}
//隐私条款监听器
TextView.OnClickListener listener1 = new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Register.this,Clause.class)
Bundle bundle = new Bundle()
bundle.putString("data","1")
intent.putExtras(bundle)
startActivity(intent)
}
}
TextView.OnClickListener listener2 = new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Register.this,Clause.class)
Bundle bundle = new Bundle()
bundle.putString("data","2")
intent.putExtras(bundle)
startActivity(intent)
}
}
}
2:activity_register.xml布局:
<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:background="#f1f1f1"
android:orientation="vertical"
tools:context="com.plstudio.jichengandroid.ui.Register">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="#169dde"
android:orientation="horizontal">
<!--25dp-->
<ImageButton
android:id="@+id/goBack"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:background="#169dde"
android:scaleType="fitXY"
android:src="@drawable/back" />
<TextView
android:id="@+id/textView15"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:gravity="center"
android:text="注册"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:layout_marginTop="15dp"
android:background="#ffffffff"
android:orientation="horizontal">
<EditText
android:id="@+id/phoneText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:background="#00000000"
android:ems="10"
android:hint="请输入手机号码"
android:inputType="phone" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:background="#ffffffff"
android:orientation="horizontal">
<EditText
android:id="@+id/codeText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:background="#00000000"
android:ems="10"
android:hint="验证码"
/>
<Button
android:id="@+id/code"
android:layout_width="80dp"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="5dp"
android:background="#169dde"
android:text="获取验证码"
android:textColor="#ffffffff"
android:textSize="8dp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffffff"
android:orientation="horizontal">
<EditText
android:id="@+id/confirmText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:background="#00000000"
android:hint="密码:6-20位区分大小写"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal">
<CheckBox
android:id="@+id/agreement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:checked="true"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textSize="12dp"
android:text="我已认真阅读并同意"
android:textColor="#cccccc" />
<TextView
android:id="@+id/user_terms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textSize="12dp"
android:text="用户条款"
android:textColor="#000000" />
<TextView
android:id="@+id/privacy_clause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:textSize="12dp"
android:text="隐私条款"
android:textColor="#000000" />
</LinearLayout>
<Button
android:id="@+id/submit_register"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginTop="16dp"
android:background="@drawable/shape3"
android:text="确认"
android:textColor="#ffffffff"
android:textSize="20dp" />
</LinearLayout>
3:效果图: