You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore报错:Builder中无法解析setTimestampsInSnapshotsEnabled方法

解决Firestore的setTimestampsInSnapshotsEnabled方法找不到问题

问题原因

setTimestampsInSnapshotsEnabled这个方法在Firebase Firestore 17.0.0及以上版本已经被移除——该时间戳快照功能现在是默认启用的,无需手动配置,所以调用这个方法会报“找不到方法”的错误。

另外你的代码里还有个类型错误:把collection().document()返回的DocumentReference对象,错误声明成了FirebaseFirestoreSettings类型,这会导致后续调用set(user)时也出现异常。

修复步骤

  1. 移除过时配置代码:直接删掉以下这段无用的配置代码:
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setTimestampsInSnapshotsEnabled(true)
        .build();
mDb.setFirestoreSettings(settings);
  1. 修正变量类型:把错误的变量声明改成正确的DocumentReference类型:
// 错误写法
FirebaseFirestoreSettings newUserRef = mDb
        .collection(getString(R.string.collection_users))
        .document(FirebaseAuth.getInstance().getUid());

// 正确写法
DocumentReference newUserRef = mDb
        .collection(getString(R.string.collection_users))
        .document(FirebaseAuth.getInstance().getUid());

修正后的完整registerNewEmail方法

public void registerNewEmail(final String email, String password){

    showDialog();

    FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());

                    if (task.isSuccessful()){
                        Log.d(TAG, "onComplete: AuthState: " + FirebaseAuth.getInstance().getCurrentUser().getUid());

                        //insert some default data
                        User user = new User();
                        user.setEmail(email);
                        user.setUsername(email.substring(0, email.indexOf("@")));
                        user.setUser_id(FirebaseAuth.getInstance().getUid());

                        // 修正后的文档引用声明
                        DocumentReference newUserRef = mDb
                                .collection(getString(R.string.collection_users))
                                .document(FirebaseAuth.getInstance().getUid());

                        newUserRef.set(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                hideDialog();

                                if(task.isSuccessful()){
                                    redirectLoginScreen();
                                }else{
                                    View parentLayout = findViewById(android.R.id.content);
                                    Snackbar.make(parentLayout, "Something went wrong.", Snackbar.LENGTH_SHORT).show();
                                }
                            }
                        });

                    }
                    else {
                        View parentLayout = findViewById(android.R.id.content);
                        Snackbar.make(parentLayout, "Something went wrong.", Snackbar.LENGTH_SHORT).show();
                        hideDialog();
                    }

                    // ...
                }
            });
}

内容的提问来源于stack exchange,提问作者Donny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:50:29