问题描述
我有一个名为VerifyphoneActivity的活动,正在将edittext值传递给另一个名为FirstActivity的活动,在该活动中,我使用此值来验证我的号码并生成OTP。它显示了吐司“提供的字符串似乎不是电话号码这是我的代码:
VerifyPhoneActivity.java
公共类VerifyPhoneActivity扩展了AppCompatActivity {
EditText phoneNoEnteredByUser;
Button generateOtp;
String phoneNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verify_phone);
phoneNoEnteredByUser = (EditText) findViewById(R.id.phoneNumberEdittext);
generateOtp = (Button) findViewById(R.id.generateOtp);
phoneNumber = phoneNoEnteredByUser.getText().toString();
generateOtp.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(),FirstActivity.class);
i.putExtra("phoneNumber",phoneNumber);
startActivity(i);
}
});
}
}
FirstActivity.java
公共类FirstActivity扩展了AppCompatActivity {
String verificationCodeBySystem;
按钮verifyPhone;
EditText phoneNumberUser;
ProgressBar progressBar;
字符串电话号码;
字符串e164Number;
FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
verifyPhone = (Button) findViewById(R.id.verifyBtn);
phoneNumberUser = (EditText) findViewById(R.id.verifyEditText);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);
phoneNo = getIntent().getStringExtra("phoneNumber");
`Log.d("FirstActivity","phoneNo:- " + phoneNo);
sendVerificationCodetoUser(phoneNo,"IND");
verifyPhone.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = phoneNumberUser.getText().toString();
if (code.isEmpty() | code.length() < 6) {
phoneNumberUser.setError("Wrong OTP...");
phoneNumberUser.requestFocus();
return;
}
progressBar.setVisibility(View.VISIBLE);
verifyCode(code);
}
});
}
private String sendVerificationCodetoUser(String phoneNo,String defaultRegion) {
if (TextUtils.isEmpty(defaultRegion)) {
e164Number = phoneNo;
} else {
try {
Log.d("FirstActivity","inside sendVerificationCodetoUser()");
Log.d("FirstActivity","phoneNo:- " + phoneNo);
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber phoneNumber = phoneUtil.parse(phoneNo,defaultRegion);
e164Number = phoneUtil.format(phoneNumber,PhoneNumberUtil.PhoneNumberFormat.E164);
Log.d("FirstActivity","e164Number:- " + e164Number);
PhoneAuthProvider.getInstance().verifyPhoneNumber(
"+91" + e164Number,// Phone number to verify
60,// Timeout duration
TimeUnit.SECONDS,// Unit of timeout
TaskExecutors.MAIN_THREAD,// Activity (for callback binding)
mCallbacks);
} catch (Exception e) {
e164Number = phoneNo;
Toast.makeText(FirstActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
}
}
return e164Number;
}
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onCodeSent(@NonNull String s,@NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s,forceResendingToken);
Log.d("FirstActivity","onCodeSent()");
verificationCodeBySystem = s;
}
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
String code = phoneAuthCredential.getSmsCode();
Log.d("FirstActivity","onVerificationCompleted()");
if (code != null) {
progressBar.setVisibility(View.VISIBLE);
verifyCode(code);
}
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
Log.e("FirstActivity","onVerificationFailed()");
Log.e("FirstActivity",e.getMessage());
Toast.makeText(FirstActivity.this,Toast.LENGTH_LONG).show();
}
};
private void verifyCode(String codeByUser) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationCodeBySystem,codeByUser);
signInTheUserByCredentials(credential);
}
private void signInTheUserByCredentials(PhoneAuthCredential credential) {
firebaseAuth = FirebaseAuth.getInstance();
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(FirstActivity.this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent i = new Intent(FirstActivity.this,UserProfile.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
} else {
Toast.makeText(FirstActivity.this,task.getException().getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)