Firestore 操作(add()、set())不起作用

Sah*_*ngh 5 android google-cloud-firestore

我正在尝试将用户详细信息添加到Firestore db,但无法在其中写入数据。

实际上,没有一个侦听器被触发,也onSuccess()没有onFailure().

这是我的代码。

Map<String,Object> userlol = new HashMap<>();
userlol.put("name",name);
userlol.put("email",email);
userlol.put("uid",currentUser.getUid());
Log.d(TAG, "we are here");
CollectionReference dc = db.collection("users");
DocumentReference dd = dc.document(currentUser.getUid());
dd.set(userlol)
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Toast.makeText(SignupActivity.this, "User Added" ,
                        Toast.LENGTH_SHORT).show();
                Log.d(TAG,"User added to database");
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(SignupActivity.this, "ERROR" +e.toString(),
                        Toast.LENGTH_SHORT).show();
                Log.d(TAG, e.toString());
            }
        });
Run Code Online (Sandbox Code Playgroud)

我的 logcat 中没有 toast 和 Log。我可以看到

D/日志记录:我们在这里

此日志和此方法后的日志。

规则没有问题,因为 onFailure() 也不起作用。

我已经搜索了所有可能的东西,但没有任何效果。

Fra*_*len 4

我无法触发两个回调的唯一方法是当我的设备上没有网络连接时。在这种情况下,该行为是有意义的,因为只有当数据在服务器上提交(或拒绝)时,任务才被视为完成。

\n\n

要轻松查看 Firestore 客户端是否确实无法连接到服务器,请启用调试日志记录:

\n\n
FirebaseFirestore.setLoggingEnabled(true);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样做后我看到这样的日志条目:

\n\n
\n

11-12 07:56:21.366 10034-10066/com.firebase.firestorestackoverflow I/Firestore:(0.6.6-dev)[zzetk]:(b6322ac)流关闭,状态:zzcd {code = UNAVAILABLE,description = null, Cause=java.net.UnknownHostException: 无法解析主机“firestore.googleapis.com”: 没有与 java.net.InetAddress.lookupHostByName(InetAddress.java:470)\n 处的主机名\n 关联的地址 java.net.InetAddress .getAllByNameImpl(InetAddress.java:252)\n 在 java.net.InetAddress.getAllByName(InetAddress.java:215)\n 在 io.grpc.internal.zzbj$zzb.zztu(未知来源)\n 在 io.grpc .internal.zzbk.run(来源未知)\n 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\n 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) \n 在 java.lang.Thread.run(Thread.java:818)\n 引起:android.system.GaiException: android_getaddrinfo 失败: EAI_NODATA (没有与主机名关联的地址)\n 在 libcore.io.Posix.android_getaddrinfo(本机方法)\n 在 libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)\n 在 java.net.InetAddress.lookupHostByName(InetAddress.java:451)\n 在 java.net.InetAddress.getAllByNameImpl(InetAddress. java:252)\xc2\xa0\n 在 java.net.InetAddress.getAllByName(InetAddress.java:215)\xc2\xa0\n 在 io.grpc.internal.zzbj$zzb.zztu(未知来源)\xc2\ xa0\n 位于 io.grpc.internal.zzbk.run(来源不明)\xc2\xa0\n 位于 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\xc2\xa0\n 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\xc2\xa0\n 在 java.lang.Thread.run(Thread.java:818)\xc2 \xa0\n }.

\n
\n