ANDROID_ID вызывать при ошибке нулевого объекта Firebase Database - PullRequest
0 голосов
/ 01 сентября 2018

Я новичок в разработке приложений для Android. Я пытался создать приложение с аутентификацией электронной почты и пароля Firebase, а также пытался сохранить ANDROID_ID телефона в базе данных Firebase во время процесса регистрации.

Но всякий раз, когда я открываю активность регистрации, приложение закрывается и отображает следующую ошибку в Logcat:

java.lang.RuntimeException: Невозможно создать экземпляр активности ComponentInfo {com.rimikri.smartpedi / com.rimikri.smartpedi.SignUpActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод «android.content.ContentResolver android.content.Context.getContentResolver () 'для нулевого объекта ссылка

Это моя регистрация:

public class SignUpActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editTextName;
    private FirebaseAuth mAuth;
    public String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);
        editTextName = findViewById(R.id.edit_text_name);
        mAuth = FirebaseAuth.getInstance();
    }

    private void registerUser() {
        final String name = editTextName.getText().toString().trim();
        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(new OnCompleteListener < AuthResult > () {
                @Override
                public void onComplete(@NonNull Task < AuthResult > task) {
                    if (task.isSuccessful()) {

                        User user = new User(
                            name,
                            androidId
                        );

                        FirebaseDatabase.getInstance().getReference("Users")
                            .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                            .setValue(user).addOnCompleteListener(new OnCompleteListener < Void > () {
                                @Override
                                public void onComplete(@NonNull Task < Void > task) {
                                    //
                                }
                            });

                    } else {
                        //
                    }
                }
            });
    }
}

Класс User, который у меня есть:

public class User {
    public String name;


    public User() {

    }

    public User(String name) {
        this.name = name;
    }
}

Как мне получить здесь ANDROID_ID?

1 Ответ

0 голосов
/ 01 сентября 2018

Получите ваш androidId внутри onCreate() метод

Попробуйте это

public class SignUpActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editTextName;
    private FirebaseAuth mAuth;
    public String androidId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);
        editTextName = findViewById(R.id.edit_text_name);
        mAuth = FirebaseAuth.getInstance();
        androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    }

    private void registerUser() {
        final String name = editTextName.getText().toString().trim();
        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(new OnCompleteListener < AuthResult > () {
                @Override
                public void onComplete(@NonNull Task < AuthResult > task) {
                    if (task.isSuccessful()) {

                        User user = new User(
                            name,
                            androidId
                        );

                        FirebaseDatabase.getInstance().getReference("Users")
                            .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                            .setValue(user).addOnCompleteListener(new OnCompleteListener < Void > () {
                                @Override
                                public void onComplete(@NonNull Task < Void > task) {
                                    //
                                }
                            });

                    } else {
                        //
                    }
                }
            });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...