Не могу написать в базу данных Firebase - PullRequest
0 голосов
/ 26 апреля 2018
mDatabse = FirebaseDatabase.getInstance().getReference().child("Users");

HashMap<String, String> usermMap = new HashMap<>();
usermMap.put("name", display_name);
usermMap.put("status", "Hey, ich benutze die App.");
usermMap.put("image", "default_pic");
usermMap.put("thumb_image", "default_pic");

mDatabse.setValue(usermMap);

Зарегистрируйте только эти учетные записи, но не создавайте данные базы данных.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "de.epix_crew.epixchat"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    //implementation 'com.android.support:design-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.google.firebase:firebase-auth:15.0.0'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.google.firebase:firebase-database:15.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:27.1.1'
    implementation 'de.hdodenhof:circleimageview:2.2.0'


}

apply plugin: 'com.google.gms.google-services'

вот этот файл, надеюсь, вы поможете мне заставить его работать. Возможно, если у вас есть Teamviewer, вы можете увидеть проблему:)

Спасибо тоже:)

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018
if (task.isSuccessful()) {

                FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
                String uid = current_user.getUid();

                Log.d("Inside if task successful",".......");
                // added a log to check if excecution gets inside the if block
                mDatabse = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);

                HashMap<String, String> usermMap = new HashMap<>();
                usermMap.put("name", display_name);
                usermMap.put("status", "Hey, ich benutze die - App.");
                usermMap.put("image", "default_pic");
                usermMap.put("thumb_image", "default_pic");

                mDatabse.setValue(usermMap);



                /*
                mRegProgress.dismiss();

                Intent mainIntent = new Intent(RegisterActivity.this, MainActivity.class);
                mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(mainIntent);
                finish();

                */

            } else {
                mRegProgress.hide();
                Toast.makeText(RegisterActivity.this, "Fehler! Überbrüfe noch einmal die Eingabefelder!", Toast.LENGTH_LONG).show();
            }

Добавлен лог внутри блока if.

0 голосов
/ 26 апреля 2018

Хорошо, я извлек из вашего кода наименее необходимый материал, необходимый для firebase, и попробовал его. Это работало с моей тестовой базой данных. Вот код, который я использовал:

public class MainActivity extends AppCompatActivity {

    private DatabaseReference mDatabse;
    private FirebaseAuth mAuth;
    private Button mCreateBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAuth = FirebaseAuth.getInstance();

        mCreateBtn = (Button) findViewById(R.id.btn);
        mCreateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String display_name = "Otto";
                String email = "mmuuuu@email.com";
                String password = "111111";

                if(!TextUtils.isEmpty(display_name) && !TextUtils.isEmpty(email) && !TextUtils.isEmpty(password)){
                    register_user(display_name, email, password);
                }
            }
        });
    }

    private void register_user(final String display_name, String email, String password) {
        mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {

                    FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
                    String uid = current_user.getUid();

                    mDatabse = FirebaseDatabase.getInstance().getReference().child("Users");

                    HashMap<String, String> usermMap = new HashMap<>();
                    usermMap.put("name", display_name);
                    usermMap.put("status", "Hey, ich benutze die - App.");
                    usermMap.put("image", "default_pic");
                    usermMap.put("thumb_image", "default_pic");

                    mDatabse.setValue(usermMap);

                } else {
                    Toast.makeText(MainActivity.this, "Fehler! Überbrüfe noch einmal die Eingabefelder!", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

(Обратите внимание, что я не использовал поля EditText, но поместил значения непосредственно в строковые переменные, для упрощения.)

Вот мои правила базы данных:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

А вот и записанные данные из моей базы данных. (Я экспортировал его в JSON-файл):

"Users" : {
  "image" : "default_pic",
  "name" : "Otto",
  "status" : "Hey, ich benutze die - App.",
  "thumb_image" : "default_pic"
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...