Looking for android Answers? Try Ask4KnowledgeBase
Looking for android Keywords? Try Ask4Keywords

Android Firebase Realtime Database: comment définir / obtenir des données


Exemple

Remarque: configurons une authentification anonyme pour l'exemple

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

Une fois cela fait, créez un enfant en modifiant votre adresse de base de données. Par exemple:

https://your-project.firebaseio.com/ à https://your-project.firebaseio.com/chat

Nous allons mettre des données à cet endroit à partir de notre appareil Android. Vous n'avez pas besoin de créer la structure de la base de données (onglets, champs, etc.), elle sera automatiquement créée lorsque vous enverrez un objet Java à Firebase!

Créez un objet Java contenant tous les attributs que vous souhaitez envoyer à la base de données:

public class ChatMessage {
    private String username;
    private String message;

    public ChatMessage(String username, String message) {
        this.username = username;
        this.message = message;
    }

    public ChatMessage() {} // you MUST have an empty constructor

    public String getUsername() {
        return username;
    }

    public String getMessage() {
        return message;
    }
}

Puis dans votre activité:

if (FirebaseAuth.getInstance().getCurrentUser() == null) {
        FirebaseAuth.getInstance().signInAnonymously().addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isComplete() && task.isSuccessful()){
                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference reference = database.getReference("chat"); // reference is 'chat' because we created the database at /chat
                }
            }
        });
}

Pour envoyer une valeur:

ChatMessage msg = new ChatMessage("user1", "Hello World!");
reference.push().setValue(msg);

Pour recevoir les modifications qui se produisent dans la base de données:

reference.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        ChatMessage msg = dataSnapshot.getValue(ChatMessage.class);
        Log.d(TAG, msg.getUsername()+" "+msg.getMessage());
    }

    public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
    public void onChildRemoved(DataSnapshot dataSnapshot) {}
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
    public void onCancelled(DatabaseError databaseError) {}
});

entrer la description de l'image ici