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
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;
3 odpowiedzi
Sądząc po śladzie stosu, który zamieściłeś tutaj:
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.
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
To właśnie zadziałało dla mnie
match /b/{bucket}/o {
match /{userId} {
match /{allPaths=**}{
allow read
allow write;
}
}
}
Podobne pytania
Powiązane pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].