Firebase在名称参考时添加具有特定名称/ chrash的子项(对Firebase用户)(Android)

时间:2017-09-14 10:31:33

标签: android firebase firebase-authentication

所以我尝试进行注册,自动创建一个包含电子邮件名称的子项,但程序崩溃了。

DatabaseReference mDatabase;
private Firebase firebase;
private FirebaseAuth mAuth;


firebase.child("new5").setValue(arrayList); 
mDatabase.child("new5").setValue(arrayList);

这两个选项完美无缺,但是当我尝试使用用户时:

 FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
 String userEmail = user.getEmail().toString();   
         Toast.makeText(MainActivity.this,userEmail,Toast.LENGTH_SHORT).show();
 mDatabase.child(userEmail).setValue(arrayList);

Toast工作,但是当我添加最后一行时它会崩溃 有没有办法解决这种情况,或者是否有一种简单的方法来连接用" push()"与用户?

1 个答案:

答案 0 :(得分:1)

问题是您尝试在未编码的userEmail中使用DatabaseReference。 Firebase不允许使用.(点)等关键符号。因此,为了解决这个问题,您需要对电子邮件地址进行编码,如下所示:

  

name@email.com - >名@电子邮件,玉米

为实现这一目标,我重新尝试使用以下方法:

static String encodeUserEmail(String userEmail) {
    return userEmail.replace(".", ",");
}

要解码电子邮件,您可以使用以下方法:

static String decodeUserEmail(String userEmail) {
    return userEmail.replace(",", ".");
}