gpt4 book ai didi

android - 在向android中的服务器发送请求之前如何进行验证检查?

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:15 25 4
gpt4 key购买 nike

我有一个包含手机号码、通行证和电子邮件的应用程序,如果用户输入“lll”之类的电子邮件 ID 并按下提交按钮,那么应用程序将向服务器发送“lll”之类的值,但是我想要的条件只会检查用户是否在电子邮件编辑文本中输入了某些内容,如果用户未输入任何内容,则应用程序应仅使用手机和密码向服务器发送请求,因为电子邮件是可选的。我该怎么做

代码:-

@Override
public void onClick(View v) {
m_Email = m_EmailEditText.getText().toString().trim();
if (!isValidEmail(m_Email)) {
CSnackBar.getInstance().showSnackBarError(findViewById(R.id.mainLayout), "Please enter valid Email Id", getApplicationContext());

} else {
confirmationDialog();//open confirmation dialog.....
}

}
});
/*validation for email*/
private boolean isValidEmail(String email) {// validation for email Id
String emailPattern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

Pattern pattern = Pattern.compile(emailPattern);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}

最佳答案

我遇到过类似的问题,我准备了一个模块来检查它。我已经为所有类型的检查准备了一个代码,比如姓名、电话号码、电子邮件 ID、注册号码等。

这是 Validation.java 类,我们在其中定义了所有类型的检查:-

package com.Validation;
import android.util.Log;
import android.widget.EditText;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Validation {

// Regular Expression
// you can change the expression based on your need
private static final String EMAIL_REGEX = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
private static final String PHONE_REGEX = "\\d{3}-\\d{7}";
public static final String USERNAME_PATTERN = "^[a-z0-9_-]{3,15}$";

private static Matcher matcher;
private static Pattern pattern;
/// private static final String USERNAME_PATTERN =;
// Error Messages
private static final String REQUIRED_MSG = "required";
private static final String EMAIL_MSG = "invalid email";
private static final String PHONE_MSG = "###-#######";
////for user name validation

public Validation(){

pattern = Pattern.compile(Validation.USERNAME_PATTERN);
}

public static boolean validateusername(String username){

matcher = pattern.matcher(username);
return matcher.matches();

}

// call this method when you need to check email validation
public static boolean isEmailAddress(EditText editText, boolean required) {
return isValid(editText, EMAIL_REGEX, EMAIL_MSG, required);
}

// call this method when you need to check phone number validation
public static boolean isPhoneNumber(EditText editText, boolean required) {


return isValid(editText, PHONE_REGEX, PHONE_MSG, required);
}

// return true if the input field is valid, based on the parameter passed
public static boolean isValid(EditText editText, String regex, String errMsg, boolean required) {

String text = editText.getText().toString().trim();



editText.setError(null);

// text required and editText is blank, so return false
if ( required && !hasText(editText) ) return false;

// pattern doesn't match so returning false
if (required && !Pattern.matches(regex, text)) {

editText.setError(errMsg);
return false;
};

return true;
}

// check the input field has any text or not
// return true if it contains text otherwise false
public static boolean hasText(EditText editText) {

String text = editText.getText().toString().trim();
editText.setError(null);

// length 0 means there is no text
if (text.length() == 0) {
editText.setError(REQUIRED_MSG);
return false;
}

return true;
}
}

现在在您要进行验证的 Activity 中,请放置如下代码:-

public class MyActivity extends Activity {

private EditText etNormalText;
private EditText etEmailAddrss;
private EditText etPhoneNumber;
private Button btnSubmit;
public static final String USERNAME_PATTERN = "^[a-z_-]{1,15}$";
public static final String ENUM_PATTERN = "^[a-z0-9_-]{3,12}$";

private static Matcher matcher;
private static Pattern pattern,patforeno;


public MyActivity(){

pattern = Pattern.compile(USERNAME_PATTERN);
patforeno = Pattern.compile(ENUM_PATTERN);

}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);

registerViews();
}

public static boolean validateusername(String username){

matcher = pattern.matcher(username);
return matcher.matches();

}
private void registerViews() {
etNormalText = (EditText) findViewById(R.id.et_normal_text);
// TextWatcher would let us check validation error on the fly
etNormalText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
//Validation.hasText(etNormalText);


}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});

etEmailAddrss = (EditText) findViewById(R.id.et_email_address);
etEmailAddrss.addTextChangedListener(new TextWatcher() {
// after every change has been made to this editText, we would like to check validity
public void afterTextChanged(Editable s) {
Validation.isEmailAddress(etEmailAddrss, true);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});

etPhoneNumber = (EditText) findViewById(R.id.et_phone_number);
etPhoneNumber.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {


Validation.isPhoneNumber(etPhoneNumber, false);

}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});

btnSubmit = (Button) findViewById(R.id.btn_submit);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*
Validation class will check the error and display the error on respective fields
but it won't resist the form submission, so we need to check again before submit
*/
if (checkValidation())
submitForm();
else
Toast.makeText(MyActivity.this, "Form contains error", Toast.LENGTH_LONG).show();
}
});
}

private void submitForm() {
// Submit your form here. your form is valid
etNormalText = (EditText) findViewById(R.id.et_normal_text);
boolean isvalidu = false;
etPhoneNumber = (EditText) findViewById(R.id.et_phone_number);
etEmailAddrss = (EditText) findViewById(R.id.et_email_address);
////email validation


if (Validation.isEmailAddress(etEmailAddrss, true)) {

Log.d("mail", "validmail");

} else {
Log.d("mail", "invalidvalidmail");
}

///phone number validation
int length = etPhoneNumber.getText().toString().length();
Log.d("length", String.valueOf(length));
int ten = 10;
if (length != ten) {
Toast.makeText(getApplicationContext(),"Please enter your ten digit mobile number",Toast.LENGTH_LONG).show();
} else {
Validation.isPhoneNumber(etPhoneNumber, false);
Log.d("numberpho","valid");
}
///username validation
try {
isvalidu=validateusername(etNormalText.getText().toString());
Log.d("hello valid username", "error message"+isvalidu);
Toast.makeText(this, "Submitting form..."+isvalidu, Toast.LENGTH_LONG).show();

} catch (Exception e) {
Log.d("hello valid username", "error message"+isvalidu);
Toast.makeText(this, "Submitting form...", Toast.LENGTH_LONG).show();
}
}

private boolean checkValidation() {
boolean ret = true;

if (!Validation.hasText(etNormalText)) ret = false;
if (!Validation.isEmailAddress(etEmailAddrss, true)) ret = false;
if (!Validation.isPhoneNumber(etPhoneNumber, false)) ret = false;

return ret;
}
}

所以希望这些对您的代码有所帮助,实际上您必须根据您的要求完善我的代码。registerView() 和 checkValidation() 以及 submitforms() 方法对于验证来说非常重要。

关于android - 在向android中的服务器发送请求之前如何进行验证检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com