如何解决这个错误。 com.google.android.gms.tasks.task executors$zza 无法转换为 android.app.activity。我是 Java 和 Andro
Posted
技术标签:
【中文标题】如何解决这个错误。 com.google.android.gms.tasks.task executors$zza 无法转换为 android.app.activity。我是 Java 和 Android 应用的新手【英文标题】:How to solve this this error. com.google.android.gms.tasks.task executors$zza cannot be cast to android.app.activity. I am new at Java & Android app 【发布时间】:2022-01-15 14:53:07 【问题描述】:我想通过电话号码验证 OTP 码来验证用户,现在我无法解决这个问题。我是 android 应用程序开发的新手。我已经将 Firebase 与 android studio 连接起来,除了这个错误,一切都很好。
Logcat 消息错误:
原因:java.lang.ClassCastException:com.google.android.gms.tasks.TaskExecutors$zza 无法转换为 android.app.Activity 在 com.saqib.onlinefirregistration.VerifyOTP.sendVerificationCodeToUser(VerifyOTP.java:55) 在 com.saqib.onlinefirregistration.VerifyOTP.onCreate(VerifyOTP.java:48)
验证OTP.java:
public class VerifyOTP extends AppCompatActivity
//Variable
PinView pinForUser;
String codeBySystem;
Button verifyButton;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.verify_otp);
pinForUser = findViewById(R.id.pin_view);
verifyButton = findViewById(R.id.verify_btn);
String _PhoneNo = getIntent().getStringExtra("phoneNo");
sendVerificationCodeToUser(_PhoneNo);
private void sendVerificationCodeToUser(String phoneNo)
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phoneNo, // Phone No to verify
60, //timeout duration
TimeUnit.SECONDS, //Time unit
(Activity) TaskExecutors.MAIN_THREAD,
mCallback);
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallback
= new PhoneAuthProvider.OnVerificationStateChangedCallbacks()
@Override
public void onCodeAutoRetrievalTimeOut(@NonNull String s)
super.onCodeAutoRetrievalTimeOut(s);
codeBySystem =s;
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential)
String code = phoneAuthCredential.getSmsCode();
if (code!=null)
pinForUser.setText(code);
verifyCode(code);
@Override
public void onVerificationFailed(@NonNull FirebaseException e)
Toast.makeText(VerifyOTP.this, e.getMessage(), Toast.LENGTH_SHORT).show();
;
private void verifyCode(String code)
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(codeBySystem,code);
signInWithPhoneAuthCredential(credential);
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential)
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
if (task.isSuccessful())
Toast.makeText(VerifyOTP.this, "Verification Completed", Toast.LENGTH_SHORT).show();
else
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException)
Toast.makeText(VerifyOTP.this, "Verification Not Completed! Try Again", Toast.LENGTH_SHORT).show();
);
private void signInUsingCredential(PhoneAuthCredential credential)
public void callNextScreenOTP( View view)
String code = pinForUser.getText().toString();
if (!code.isEmpty())
verifyCode(code);
;
我该如何解决这个问题?我不知道,我确实搜索过相同的问题,但在 Google 上找不到,或者堆栈溢出。
我想通过电话号码验证 OTP 码来验证用户,现在我无法解决这个问题。我是 android 应用程序开发的新手。我已将 Firebase 与 android studio 连接,除此错误外一切正常。
【问题讨论】:
【参考方案1】:(Activity) TaskExecutors.MAIN_THREAD
行错误。从错误消息中可以清楚地看出无法进行强制转换。
既然你在活动,只要this
应该在这个地方做。
【讨论】:
以上是关于如何解决这个错误。 com.google.android.gms.tasks.task executors$zza 无法转换为 android.app.activity。我是 Java 和 Andro的主要内容,如果未能解决你的问题,请参考以下文章