я не получаю изображение URI ..... изображение хранится в FireBase - PullRequest
0 голосов
/ 16 апреля 2019
storageRef.child("users/me/profile.png").getBytes(Long.MAX_VALUE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Uri image=uri;
Toast.makeText(viewpgdetails.this, "image uri="+image , Toast.LENGTH_SHORT).show();
            }
        }).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
            }
        });
        // [END download_full_example]
    }

1 Ответ

0 голосов
/ 16 апреля 2019

Неясно, какой тип 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().

.

Смотри также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...