问题
i don't know why, but everything iam trying doesn't work. I really need my Storgae DownloadUrl form my Files but i always get something back like: com.google.android.gms.tasks...
I'm searching for a week and tryied different youtube methods.
I would be really gratefull if someone could help me with it. Below is a snap of my Code.
Thanks very much
private void uploadFile() {
if (mImageUri != null) {
final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
+ "." + getFileExtension(mImageUri));
Log.i("test456", mImageUri.toString());
mUploadTask = fileReference.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(final UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run() {
mProgressBar.setProgress(0);
}
}, 500);
Log.i("test789", fileReference.getDownloadUrl().toString());
Toast.makeText(UploadForm.this, "Upload successful", Toast.LENGTH_LONG).show();
//test string change Upload too
String storageUrl = "";
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getMetadata().getReference().getDownloadUrl().toString());
String uploadId = mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
// FirebaseStorage.getInstance().getReference().child("uploads").getDownloadUrl();
final String downloadedUrl = taskSnapshot.getStorage().getDownloadUrl().toString();
Uri downloadURL = Uri.parse(mImageUri.toString());
String imageUrl = downloadURL.toString();
Log.i("test123", String.valueOf(mStorageRef.getDownloadUrl()));
Log.i("XXX URL PATH____",taskSnapshot.getMetadata().getReference().getDownloadUrl().toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(UploadForm.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
mProgressBar.setProgress((int) progress);
}
});
} else {
Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
}
}
private void openImagesActivity() {
Intent intent = new Intent(this, ImagesActivity.class);
startActivity(intent);
}
}
回答1:
Could you try this:
fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Download URL
String url = uri.toString();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Errors
}
});
回答2:
you can also use this way to get the download url.
mUploadTask = fileReference.putFile(mImageUri)
.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful())
{
task.getResult().getStorage().getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String downloadUrl= uri.toString();
}
});
}
else
{
}
}
});
回答3:
ty for the quick respond, but i got a solution :)
with this change in my code it works now !!
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
while (!urlTask.isSuccessful());
Uri downloadUrl = urlTask.getResult();
//Log.d(TAG, "onSuccess: firebase download url: " +
downloadUrl.toString());
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());
String uploadId = mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
```
来源:https://stackoverflow.com/questions/60691890/android-studio-cant-get-storage-download-url