java - getFullName:无法解析数字
问题描述
我正在尝试使用存储在 firebase 实时数据库中的数据登录,当我尝试使用电话号码登录时,它会出现错误并且 ondatachange 功能不起作用。
public class LoginActivity extends AppCompatActivity {
Button Log_in, sign_up;
CountryCodePicker countryCodePicker;
TextInputLayout number, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log_in = findViewById(R.id.Log_in);
sign_up = findViewById(R.id.sign_up);
number = findViewById(R.id.number);
password = findViewById(R.id.password);
countryCodePicker = findViewById(R.id.Login_ccp);
}
public void callHomrScreen(View view) {
if (!validateNumber() | !validatePassword()){
return;
}
//getting data
String _phoneNumber = number.getEditText().getText().toString().trim();
String _password = password.getEditText().getText().toString().trim();
if (_phoneNumber.charAt(0)=='0'){
_phoneNumber=_phoneNumber.substring(1);
}
String _completePhoneNumber = "+" + countryCodePicker.getFullNumber() + _phoneNumber;
//???DatabaseQuery
Query chekUser = FirebaseDatabase.getInstance().getReference("Users").orderByChild("phoneNumber").equalTo(_completePhoneNumber);
chekUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
number.setError(null);
number.setErrorEnabled(false);
String systemPassword=snapshot.child(_completePhoneNumber).child("password").getValue(String.class);
if (systemPassword.equals(_password)){
password.setError(null);
password.setErrorEnabled(false);
}else{
Toast.makeText(LoginActivity.this, "Password Doesnot Exist!", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(LoginActivity.this, "User Doesnot Exist!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(LoginActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
public void callRegisterActivity(View view) {
startActivity(new Intent(getApplicationContext(), RegisterActivity.class));
}
private boolean validateNumber() {
String val = number.getEditText().getText().toString().trim();
if (val.isEmpty()) {
number.setError("field cannot be empty");
return false;
} else {
number.setError(null);
number.setErrorEnabled(false);
return true;
}
}
private boolean validatePassword() {
String val = password.getEditText().getText().toString().trim();
String checkPassword = "^" +
"(?=.*[0-9])" + //at least 1 digit
"(?=.*[a-z])" + //at least 1 lower case letter
"(?=.*[A-Z])" + //at least 1 upper case letter
"(?=.*[a-zA-Z])" + //any letter
"(?=.*[@#$%^&+=])" + //at least 1 special character
"(?=\\S+$)" + //no white spaces
".{4,}" + //at least 4 characters
"$";
if (val.isEmpty()) {
password.setError("field cannot be empty");
return false;
}
//else if (!val.matches(checkPassword)){
// password.setError("password should contain atleast 4 charecter");
// return false;
//}
else {
password.setError(null);
password.setErrorEnabled(false);
return true;
}
}
}
错误 E/CCP:getFullNumber:无法解析数字 E/CCP:getFullNumber:无法解析数字 E/OpenGLRenderer:GL 错误:0x506 A/OpenGLRenderer:GL 错误!frameworks/base/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp:126 A/libc:致命信号 6 (SIGABRT),tid 9153 (RenderThread) 中的代码 -1 (SI_QUEUE),pid 9112
解决方案
尝试替换countryCodePicker.getFullNumber()
为countryCodePicker.getSelectedCountryCode
所以你的电话号码是:
String _completePhoneNumber = "+" + countryCodePicker.getSelectedCountryCode() + _phoneNumber;
使用getSelectedCountryCode
你只得到像:1,91、81这样的数字代码,你得到像这样的输出:+1xxxxxxxxxx
推荐阅读
- mysql - 存储过程在“in”语句中不使用字符串
- flutter - 在颤振小部件树中检测用户创建的小部件
- sorting - 使用 Game Maker Studio 2 中的快速排序算法对列表进行排序
- neural-network - TypeError: forward() 在尝试使用 ExplainerDashboard 时得到了一个意外的关键字参数“temp”
- javascript - 如何使用 javascript 为每个部分制作滚动动画?
- javascript - 如何使用 React 从列表的某个元素中删除 CSS 类
- java - Spring Rest 模板总是返回 500
- reactjs - 如何在 Reactjs 中创建审批帖子?
- windows - 在 Windows 登录屏幕之前启动我的应用程序
- c# - 读取数据并将数据附加到新文件后无法移动文件c#