Неясно, какой тип URI вы хотите, поэтому я включу обе версии.
URI хранилища Google
Это не очень полезно вне API Google.
Это будет в формате: gs://PROJECT_ID.appspot.com/path/to/file.png
Чтобы получить это значение, вы должны использовать следующий код:
String storageUri = storage.getReference('path/to/file.png').toString();
В коде вопроса вы должны использовать:
StorageReference fileRef = storageRef.child("users/me/profile.png")
fileRef.getBytes(Long.MAX_VALUE)
.addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Toast.makeText(viewpgdetails.this, "image uri: " + fileRef.toString(), Toast.LENGTH_SHORT).show();
// Use the bytes to display the image
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(viewpgdetails.this, "failed to get image", Toast.LENGTH_SHORT).show();
// Handle any errors
}
});
URL-адрес ресурса HTTPS
Этот URL будет использоваться, если вы хотите включить изображение на веб-странице или ссылку на него в электронном письме.
Это будет в формате: https://firebasestorage.googleapis.com/v0/b/PROJECT_ID.appspot.com/o/path%2Fto%2Ffile.png?alt=media&token=ACCESS_TOKEN
Поскольку в этом URL-адресе используется токен доступа, выданный сервером, его необходимо запросить и вернуть клиенту асинхронно. Это достигается с помощью следующего кода:
Task<Uri> getDownloadUrlTask = storage.getReference('path/to/file.png').getDownloadUrl();
В коде вопроса вы должны использовать:
StorageReference fileRef = storageRef.child("users/me/profile.png")
fileRef.getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri downloadUrl) {
Toast.makeText(viewpgdetails.this, "image url: " + downloadUrl, Toast.LENGTH_SHORT).show();
// Use URL for internal web page, etc.
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(viewpgdetails.this, "failed to get image url", Toast.LENGTH_SHORT).show();
// Handle any errors
}
});
Примечание: Если вы хотите, чтобы URL-адрес HTTPS и файл представляли собой байтовый массив, их нужно будет запрашивать как отдельные задачи, используя как getBytes()
, так и getDownloadUrl()
.
.
Смотри также