Ich habe ein Problem mit Firebase Storage und Realtime DB. Mein Firebase-Objekt besteht aus 4 String-Feldern, drei von ihnen stammen aus EditText-Widgets, das vierte muss die downloadURL eines Bildes sein, das ich in Firebase Storage gelegt habe, aber ich verstehe nicht, wie ich es dort ablegen soll.Wie füge downloadUrl dem fireBaseDB Objekt hinzu?
Mein aktueller Code für Daten zu FirebaseDB drängt unter:
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
menuItem menuItem = new menuItem(name.getText().toString(), description.getText().toString(), Integer.parseInt(price.getText().toString()), mChosenStorageRef.getDownloadUrl().toString());
mChosenDBRef.push().setValue(menuItem);
} catch (NumberFormatException exception) {
Toast toast = Toast.makeText(MainActivity.this, R.string.price_error, Toast.LENGTH_LONG);
toast.show();
}
name.setText("");
description.setText("");
price.setText("");
Die mChosenStorageRef.getDownloadUrl().toString()
Methode gibt mir so etwas wie „[email protected]“, aber nicht die richtige URL.
Ich kann die richtige donwloadURL aus dem unten stehenden Code, ich kann nicht verstehen, wie man es in die Push-Methode oben setzen.
uploadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, RC_PHOTO_PICKER);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_PHOTO_PICKER)
{
Uri imageUri = data.getData();
mChosenStorageRef = mChosenStorageRef.child(imageUri.getLastPathSegment());
mChosenStorageRef.putFile(imageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
}
});
}
}
Vielen Dank für die Antwort. Ich habe versucht, beide Wege zu beschreiben, aber ich habe keine Lösung. Der erste Weg gab mir etwas wie [email protected] Die zweite Möglichkeit besteht darin, die URL in die Datenbank zu schieben. Aber es bringt es zu einem separaten Objekt in der DB, was ich nicht brauche. Hoffe ich habe dich richtig verstanden. – Konstantin