Java 如何将图像uri发送到firebase?
我一直试图将uri发送到firebase,但无法获得正确的数据。在success listener中我可以使用什么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);
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保存到文件的问题