Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将图像uri发送到firebase?_Java_Android_Android Studio - Fatal编程技术网

Java 如何将图像uri发送到firebase?

Java 如何将图像uri发送到firebase?,java,android,android-studio,Java,Android,Android Studio,我一直试图将uri发送到firebase,但无法获得正确的数据。在success listener中我可以使用什么 private Bitmap getBitmapFromView(View view, int height, int width) { Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap);

我一直试图将uri发送到firebase,但无法获得正确的数据。在success listener中我可以使用什么

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) {



        }
    });
}
public void保存位图(位图){
日历=Calendar.getInstance();
最后一个字符串currentDate=DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
压缩(bitmap.CompressFormat.JPEG,20,baos);
字节[]数据=baos.toByteArray();
FirebaseStorage=FirebaseStorage.getInstance();
StorageReference-storageRef=storage.getReferenceFromUrl(“存储详细信息”);
StorageReference imagesRef=storageRef.child(“详细信息”);
UploadTask UploadTask=imagesRef.putBytes(数据);
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
}
});
}

如何从屏幕截图中获取uri?

您可以获取存储url,如下所示:

 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) {
                        
                    }
                });
uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
返回storageRef.getDownloadUrl();
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时的公共无效(Uri){
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
}
});

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

您是否正在尝试将URI对象保存到firebase?是的,这就是我在应用程序中尝试的操作。我很想将URI保存到文件中,但我认为这是不可能的,您可以调用
toString()
并保存字符串,通过调用
Uri.parse(string)
来创建Uri,也就是说您不能保存Uri,但问题中的代码不是您试图保存的代码。如果您得到答案,您可以放弃投票。我不明白你评论的第二部分!他正在询问有关将Uri保存到文件的问题