Java Firebase实时数据库在使用应用程序时仍然无效。怎么可能呢?它';It’真奇怪
以下是我的Firebase实时数据库的规则:Java Firebase实时数据库在使用应用程序时仍然无效。怎么可能呢?它';It’真奇怪,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,以下是我的Firebase实时数据库的规则: { "rules": { ".read": true, ".write": true } } RegisterActivity.java public class RegisterActivity extends AppCompatActivity { private EditText mUserName, mEmail, mPassword; p
{
"rules": {
".read": true,
".write": true
}
}
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
private EditText mUserName, mEmail, mPassword;
private Button registerBtn;
private TextView toLogin;
private ProgressBar progressBar;
private ImageView mImage;
// Firebase stuff
private FirebaseAuth mAuth;
private DatabaseReference databaseReference;
private FirebaseDatabase mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
setupUI();
mAuth = FirebaseAuth.getInstance();
registerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userName = mUserName.getText().toString();
String email = mEmail.getText().toString();
String password = mPassword.getText().toString();
if(TextUtils.isEmpty(userName)) {
Toast.makeText(getApplicationContext(),"Username is required", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(),"Email is required", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(),"Password is required", Toast.LENGTH_SHORT).show();
}
if(userName.length() < 4) {
Toast.makeText(RegisterActivity.this, "Username too short", Toast.LENGTH_SHORT).show();
}
if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
Toast.makeText(getApplicationContext(),"Valid email address", Toast.LENGTH_SHORT).show();
}
if(password.length() < 8) {
Toast.makeText(getApplicationContext(),"Password must contain at least 8 characters", Toast.LENGTH_SHORT).show();
}
userRegister(email, password);
startActivity(new Intent(getApplicationContext(), MenuActivity.class));
finish();
}
});
toLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
});
}
private void userRegister(String email, String password) {
final ProgressDialog progressDialog = new ProgressDialog(RegisterActivity.this,
R.style.AppTheme_Dark_Dialog);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Creating account...");
progressDialog.show();
//register user in firebase
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
User user = new User(email, password);
FirebaseDatabase.getInstance().getReference("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
Toast.makeText(RegisterActivity.this, "User successful created",
Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
else {
Toast.makeText(RegisterActivity.this, "Failed to register",
Toast.LENGTH_SHORT).show();
}
}
});
}
else {
Toast.makeText(RegisterActivity.this, "Error! " +
task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
private void setupUI() {
mImage = findViewById(R.id.image);
mUserName = findViewById(R.id.userName_register);
mEmail = findViewById(R.id.email_register);
mPassword = findViewById(R.id.password_register);
registerBtn = findViewById(R.id.register_button);
toLogin = findViewById(R.id.toLogin);
progressBar = findViewById(R.id.progress_bar_register);
}
}
我试过很多在网上找到的东西,但都没用,也没什么变化,它仍然是空的。我是非常绝望的家伙。我是不是忘了加点什么?不幸的是,我是Android和Firebase的新手。提前感谢。您是否通过从Firebase控制台下载google-services.json并将其放入Android Studio项目来设置应用程序 另外,您是否将应用程序的签名添加到Firebase控制台中允许的应用程序中
请参阅。您是否通过从Firebase控制台下载google-services.json并将其放入Android Studio项目来设置应用程序 另外,您是否将应用程序的签名添加到Firebase控制台中允许的应用程序中
请参阅。这段代码中有很多内容,而堆栈溢出是一种效率极低的交互式调试器。如果您在调试器中运行此代码,请在您期望某些行为的所有行上设置断点,哪一行是第一个不执行您期望它执行的操作的行?问题是控制台不报告任何错误,并且使用调试器并放置断点,它再次完全跳过了那些代码行:除非你告诉我们,否则我们无法知道“那些代码行”是什么。你把断点放在哪里了?你以为会发生什么?发生了什么事?我强烈推荐阅读,因为这会增加我们提供帮助的机会。这段代码中有很多内容,而堆栈溢出是一个众所周知的效率低下的交互式调试器。如果您在调试器中运行此代码,请在您期望某些行为的所有行上设置断点,哪一行是第一个不执行您期望它执行的操作的行?问题是控制台不报告任何错误,并且使用调试器并放置断点,它再次完全跳过了那些代码行:除非你告诉我们,否则我们无法知道“那些代码行”是什么。你把断点放在哪里了?你以为会发生什么?发生了什么事?我强烈推荐阅读,因为它增加了我们提供帮助的机会。是的,我添加了google-services.json文件和所有必要的依赖项是的,我添加了google-services.json文件和所有必要的依赖项
public class User {
public String userName, email, password;
public User() { }
public User(String email, String password) {
this.email = email;
this.password = password;
}
public User(String userName, String email, String password) {
this.userName = userName;
this.email = email;
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}