我的Firebase存儲和實時數據庫存在問題。我的firebase對象由4個字符串字段組成,其中三個來自EditText窗口小部件,第四個字段必須是放入Firebase存儲的圖像的downloadURL,但我無法理解如何將其放置在那裏。如何將downloadUrl添加到firebaseDB對象?
我對將數據推送到FirebaseDB當前的代碼如下:
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("");
的mChosenStorageRef.getDownloadUrl().toString()
方法給我像「[email protected]」,而不是正確的URL。
我可以從下面的代碼中得到正確的donwloadURL,但我無法理解如何將它放到上面的push方法中。
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();
}
});
}
}
非常感謝你的回覆。我試圖用你描述的兩種方式,但我沒有得到解決方案。第一種方式給了我一些像[email protected]。第二種方法是將Url推送到數據庫,對。但是它將它推到了DB中的一個單獨的對象中,我不需要它。希望我正確理解你。 – Konstantin