java - 如何将图像 uri 发送到 firebase?

标签 java android android-studio

我一直在尝试将 uri 发送到 firebase,但无法获得正确的数据。我可以在成功监听器中使用什么?

private Bitmap getBitmapFromView(View view, int height, int width) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Drawable bgDrawable = view.getBackground();
    if (bgDrawable != null)
        bgDrawable.draw(canvas);
    else
        canvas.drawColor(Color.WHITE);
    view.draw(canvas);
    return bitmap;
}

及以下:

public void saveBitmap(Bitmap bitmap) {

    Calendar calendar = Calendar.getInstance();
    final String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
    byte[] data = baos.toByteArray();

    FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReferenceFromUrl("storage details");
    StorageReference imagesRef = storageRef.child("details");

    UploadTask uploadTask = imagesRef.putBytes(data);
    uploadTask.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
           
        }
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {



        }
    });
}

如何获取截图中的uri?

最佳答案

您可以获得如下存储地址:

 uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                    @Override
                    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                        if (!task.isSuccessful()) {
                            throw task.getException();
                        }
                        return storageRef.getDownloadUrl();
                    }
                }).addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        
                    }
                });

一旦你在 onSuccess 函数中获得了 url,你就可以将它保存到 firebase 数据库中。

关于java - 如何将图像 uri 发送到 firebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65249202/

相关文章:

android - Android在AAR上找不到第三个库

java - 使用 asString 方法时 Unirest 给出 NoSuchMethodError

java - 可能以线程安全的方式安全地增加 BigInteger,也许使用 AtomicReference,w/o 锁定?

android - 如何显示给定 Android 设备支持的所有 MIME 类型的列表?

android - 将 firebase 连接到 android studio 后,Firebase 库必须高于或低于 14.0.0

exception - Android Studio 中的 JUnit 测试 : NoClassDefFoundError: junit/textui/ResultPrinter

java - Ant/Ubuntu/Eclipse JAVA_HOME

java - 将可编辑文本框添加到 JFrame

Android 开启勿扰模式时不播放音效

Android Studio 控制台构建无法重用缓存的 gradle 依赖项