如何解决这个错误。 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的主要内容,如果未能解决你的问题,请参考以下文章

地形高度 Google Map Api v2

我需要帮助解决这个 JDBC 异常错误,如何解决这个问题?

我该如何解决这个错误,SQLSTATE [42000]? [复制]

我该如何解决这个错误,它的原因是啥?

如何解决 vb.net 中的这个 SQL 语法错误?

我该如何解决这个 composer.json 错误