Ниже приведен код для загрузки сообщения (с изображением или без него), когда я пытаюсь загрузить сообщение без изображения. Он не сохраняет никаких пользовательских данных (uid, uname, propi c), которые я получаю с помощью getUserData. ().
Я также пытался вызвать getUserdata без кода изображения, но он не сохраняется.
Я написал это для распознавания изображения с изображением или без изображения
if(image_uri==null){
uploadData(email, desc, "noImage");
}else{
//Post with image
uploadData(email, desc, String.valueOf(image_uri));
}
Код как следует для загрузки сообщения:
uploadProgress.setVisibility(View.VISIBLE);
//getUserData
getUserData();
//For post
final String timestamp=String.valueOf(System.currentTimeMillis());
String filePathAndName="Posts/"+"post_"+ timestamp;
if (!uri.equals("noImage")) {
//get image from imageview
Bitmap bitmap = ((BitmapDrawable) imgV.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//image compress
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
data = baos.toByteArray();
//POST WITH IMAGE
StorageReference ref = FirebaseStorage.getInstance().getReference().child(filePathAndName);
ref.putBytes(data)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//Success to firebase storage
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
downloadUri = uriTask.getResult().toString();
if (uriTask.isSuccessful()) {
//url is received upload post to firebase db
HashMap<Object, String> hashMap = new HashMap<>();
//post info
hashMap.put("uid", uid);
hashMap.put("uname", name);
hashMap.put("pid", timestamp);
hashMap.put("pdesc", desc);
hashMap.put("pimage", downloadUri);
hashMap.put("ptime", dateTime);
hashMap.put("propic", propic);
//Path to store data
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Posts");
//feeding data to ref
ref.child(timestamp).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
uploadProgress.setVisibility(View.GONE);
Toast.makeText(Add_post.this, "Post saved :)", Toast.LENGTH_SHORT).show();
//resetting fields
caption.setText("");
imgV.setImageAlpha(R.drawable.image_up_icon);
image_uri = null;
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
uploadProgress.setVisibility(View.GONE);
Toast.makeText(Add_post.this, "Post saving failed :(", Toast.LENGTH_SHORT).show();
//resetting fields
caption.setText("");
imgV.setImageAlpha(R.drawable.image_up_icon);
image_uri=null;
}
});
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Add_post.this, "Failed Uploading image", Toast.LENGTH_SHORT).show();
}
});
}
else{
getUserData();
//post without image
HashMap<Object, String> hashMap= new HashMap<>();
//post info
hashMap.put("uid", uid);
hashMap.put("uname", name);
hashMap.put("pid", timestamp);
hashMap.put("pdesc", desc);
hashMap.put("pimage", "noImage");
hashMap.put("ptime", dateTime);
hashMap.put("propic", propic);
//Path to store data
DatabaseReference ref=FirebaseDatabase.getInstance().getReference("Posts");
//feeding data to ref
ref.child(timestamp).setValue(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
uploadProgress.setVisibility(View.GONE);
Toast.makeText(Add_post.this, "Post saved :)", Toast.LENGTH_SHORT).show();
//resetting fields
caption.setText("");
imgV.setImageAlpha(R.drawable.image_up_icon);
image_uri=null;
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
uploadProgress.setVisibility(View.GONE);
Toast.makeText(Add_post.this, "Post saving failed :(", Toast.LENGTH_SHORT).show();
//resetting fields
caption.setText("");
imgV.setImageAlpha(R.drawable.image_up_icon);
image_uri=null;
}
});
}
}