Witam Więc w zasadzie po kliknięciu widoku obrazu otwiera się okno dialogowe i mogę wybrać zdjęcie, jednak po wybraniu obrazu aplikacja powoduje odłączenie mnie od konta bez przesyłania i aktualizowania zdjęcia.

 dialog = new SpotsDialog.Builder(getContext()).create();
    storageReference=FirebaseStorage.getInstance().getReference("image_upload");

    avatarIv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent =new Intent();
            intent.setType("image/");
            intent.setAction(intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,"Choisissez une image"),PICK_IMAGE_CODE);
        }
    });



 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == PICK_IMAGE_CODE ){
        dialog.show();
        UploadTask uploadTask =storageReference.putFile(data.getData());
        Task<Uri>task= uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
            @Override
            public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                if (!task.isSuccessful()){
                    Toast.makeText(getActivity(),"Erreur de téléchargement",Toast.LENGTH_SHORT).show();

                }
                return  storageReference.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if(task.isSuccessful()){
                    String Url =task.getResult().toString().substring(0,task.getResult().toString().indexOf("&token"));
                    Log.d("DIRECTLINK",Url);
                    Picasso.get().load(Url).into(avatarIv);
                    dialog.dismiss();
                }
            }
        });
    }
}

Używając punktu przerwania w if (requestCode == PICK_IMAGE_CODE) otrzymałem to

Dziennik debugowania

Ps: ten kod jest zaimplementowany we fragmencie (Widok nawigacji dolnej)

Prywatne statyczne końcowe int PICK_IMAGE_CODE = 1000;

Edycja: oto reguły przechowywania zezwalające na odczyt, zapis: if request.auth! = Null;

0
Omar Skouri 20 listopad 2019, 21:13

3 odpowiedzi

Sądząc po śladzie stosu, który zamieściłeś tutaj:

Stack trace

Wygląda na to, że masz problem ze ścieżką klas/ładowaczem klas. Upewnij się, że używasz tej samej wersji dla wszystkich bibliotek Firebase. Sprawdź swoją ścieżkę zajęć.

Zobacz to podobne pytanie.

0
ᴇʟᴇvᴀтᴇ 20 listopad 2019, 21:43
Zmieniłem więc implementację pamięci Firebase na ten sam poziom, co logowanie i baza danych, aplikacja już się nie zawiesza, ale otrzymuję monit „Błąd pobierania” tutaj jest nowy dziennik imgur.com/a/Di3uPdg
 – 
Omar Skouri
20 listopad 2019, 22:13
To jest problem „odmowa pozwolenia”. Musisz zadać nowe pytanie!
 – 
ᴇʟᴇvᴀтᴇ
20 listopad 2019, 22:45

Widziałem inne pytanie z dokładnym kodem błędu, jednak rozwiązanie nie działa dla mnie w pytaniu, które miało zmienić zasady na
usługa firebase.storage {

Dopasuj /b/{zasobnik}/o {

Dopasuj /{identyfikator użytkownika} {

match /{allPaths=**}{


allow read, write: if request.auth.uid == userId;

}

}

}

Zrobiłem to samo, ale nadal mam błąd kodu https://imgur.com/a/Di3uPdg

0
Omar Skouri 20 listopad 2019, 22:32

To właśnie zadziałało dla mnie

match /b/{bucket}/o {
  match /{userId} {
    match /{allPaths=**}{
     allow read 
     allow write;
    }
  }
}
0
robsiemb 23 listopad 2019, 22:07
Ta reguła wydaje się bardzo niebezpieczna — pozwala każdemu użytkownikowi, w tym nieuwierzytelnionym, czytać i zapisywać tyle, ile chce w pamięci Firebase — i może łatwo zostać nadużyta.
 – 
robsiemb
23 listopad 2019, 22:07