Enregistrer / consulter données Firebase avec Android Studio

Résolu
CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024 - 2 sept. 2023 à 17:38
CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024 - 17 sept. 2023 à 09:46

Bonjour,

Actuellement sur l'apprentissage du codage en java, je voudrais essayer de stocker et consulter (via des critères) des données depuis mon application vers FireBase.

le problème est que je ne sais pas comment faire ni par où commencer.

1/ Structurer FireBase FireStore (Collection=>Document...) comment faire?

2/ coder Android Studio pour enregistrer toutes les informations demandées

3/ comment récupérer les données "PUBLIQUES" des profils utilisateurs en fonction des critères

J'ai regarder des vidéos, consulté des sites mais j'ai rien trouvé qui pouvait m'aider.

J'espère que vous pourrez me mettre sur la voie.

Merci par avance.

Dites moi ce que je dois vous montrer pour vous donner une piste.

Cordialement

CR16_Padawan
Windows / Edge 116.0.1938.69

A voir également:

5 réponses

CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024
Modifié le 4 sept. 2023 à 16:39

bonjour,

alors j'ai avancé un peu. J'arrive à enregistrer une image dans FireBase_Storage mais je n'arrive pas à stocker le contenu de mes EditText dans FireStore_Database.

voici mon code:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.Toast;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

public class Page2extends AppCompatActivity {

    RadioButton RB1;
    RadioButton RB2;

    EditText Text1;
    EditText Text2;
    EditText Text3;
    EditText Text4;
    EditText Text5;
    EditText Text6;

    // One Button
    Button BoutonP;

    // One Preview Image
    ImageView ImageP;

    // constant to compare
    // the activity result code
    int SELECT_PICTURE = 200;

    Button BoutonH;
    Button BoutonSM;

    String imageURL;
    Uri uri;

  /*  RadioGroup radioGroup;
    RadioButton radioButton;*/


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_i_c);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        Text1 = findViewById(R.id.Text1);
        Text2 = findViewById(R.id.Text2);
        Text = findViewById(R.id.Text);
        Text4 = findViewById(R.id.Text4);
        Text5 = findViewById(R.id.Text5);
        Text6 = findViewById(R.id.Text6);

        // register the UI widgets with their appropriate IDs
        ImageP = findViewById(R.id.Page2Photo);

        BoutonP = findViewById(R.id.BoutonP);
        BoutonH = findViewById(R.id.BoutonH);
        BoutonSM = findViewById(R.id.BoutonSM);

        ActivityResultLauncher<Intent> activityResultLauncher=registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                new ActivityResultCallback<ActivityResult>() {

                    @Override
                    public void onActivityResult(ActivityResult result) {
                                                if (result.getResultCode() == Activity.RESULT_OK){
                                Intent data = result.getData();
                                uri =data.getData();
                                ImageP.setImageURI(uri);
                              }else {
                                Toast.makeText(Page2.this, "No Image Selected", Toast.LENGTH_SHORT).show();
                                                }
                        }

                });
        ImageP.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent photoPicker = new Intent(Intent.ACTION_PICK);
                photoPicker.setType("image/*");
                activityResultLauncher.launch(photoPicker);
            }
        });

        BoutonSM.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                saveData();
            }
        });
    }
    public void saveData(){

        StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Android Images")
                .child(uri.getLastPathSegment());

        AlertDialog.Builder builder = new AlertDialog.Builder(Page2.this);
        builder.setCancelable(false);
        builder.setView(R.layout.progress_layout);
        AlertDialog dialog = builder.create();
        dialog.show();

        storageReference.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
                while (!uriTask.isComplete()) ;
            Uri urlImage = uriTask.getResult();
            imageURL = urlImage.toString();
            uploadData();
            dialog.dismiss();

        }

        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                dialog.dismiss();
            }
        });
    }
    public void uploadData(){

    String T1= Text1.getText().toString();
    String T2= Text2.getText().toString();
        String T3= Text.getText().toString();
        String T4= Text4.getText().toString();
        String T5= Text5.getText().toString();
        String T6= Text6.getText().toString();

        DataClass dataClass = new DataClass(T1, T2, T3, T4, T5, T6);

        FirebaseDatabase.getInstance().getReference("Android Tutorials").child(T1)
                .setValue(dataClass).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()){
                        Toast.makeText(Page2.this, "Saved", Toast.LENGTH_SHORT).show();
                        finish();
                    }
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
                    public void onFailure(@NonNull Exception e) {
                Toast.makeText(Page2.this,e.getMessage().toString(), Toast.LENGTH_SHORT).show();
            }
        });

    }
}

Merci d'avance pour votre eclairage.

Cordialement

CR16_Padawan

0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
4 sept. 2023 à 16:01

Hello, 

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getLastPathSegment()' on a null object reference
                                                                                                    	at fr.xxx.testapp.Page2.saveData(Page2.java:119)

As-tu regardé ligne 119 ? Tu as un problème dans une chaine de caractères a priori


0
CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024
4 sept. 2023 à 18:24

Hello BrunoCS

Merci pour ton retour, effectivement l'erreur était que si je ne mets pas d'image ça ne fonctionne pas.

Par contre si tu as une suggestion à me faire pour stocker mes editText sur mon FireStore Database, je suis preneur.

0
CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024
8 sept. 2023 à 15:22

Bonjour,

j'ai finalement trouvé un code que j'ai réussi à adapter à mon projet mais je voudrais savoir si je peux affecter un ID personnalisé à mes "documents" et "collections" en fonction des EditText de l'appli?

un petit bout de code pour vous montrer ce que j'ai écrit et surtout ce que je dois modifier et comment.

j'ai tenter d'ajouter la ligne DocumentReference mais ça ne fonctionne pas.

   private void addDataToFirestore(String Text1,
                                    String Text2,
                                    String Text3,
                                    String Text4,
                                    String Text5,
                                    String Text6) {


        // creating a collection reference
        // for our Firebase Firetore database.

        CollectionReference dbUsers = db.collection("Users");


                DocumentReference dbDoc1 = db.collection("Users").document("Doc1");

        // adding our data to our Users object class.

        Users users= new Users(Text1,
                Text2,
                Text3,
                Text4,
                Text5,
                Text6);

        // below method is use to add data to Firebase Firestore.

        dbUsers .add(users).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                // after the data addition is successful
                // we are displaying a success toast message.
                Toast.makeText(Page2.this, "Your Course has been added to Firebase Firestore", Toast.LENGTH_SHORT).show();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // this method is called when the data addition process is failed.
                // displaying a toast message when data addition is failed.
                Toast.makeText(Page2.this, "Fail to add course \n" + e, Toast.LENGTH_SHORT).show();
            }
        });
    }

}

Merci d'avance pour votre aide.

CR16_Padawan

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CR16_Padawan Messages postés 54 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 24 avril 2024
17 sept. 2023 à 09:46

Bonjour a tous,

Personne ne peut m'apporter une proposition?


0