Postimage в postMap не сохраняется в базе данных - PullRequest
0 голосов
/ 30 апреля 2020

Время, дата, полное имя, profileImage и uid в postMap сохраняются в базе данных. Но постимейдж не хранится в базе огня. Пожалуйста, помогите решить эту проблему. Postimage не появляется, когда я запускаю эмулятор, тогда как остальные из них появляются

public class PostActivity extends AppCompatActivity {

    private Toolbar mToolbar;
    private ImageButton SelectPostImage;
    private Button UpdatePostButton;
    private EditText PostDescription;
    private static final int Gallery_Pick =1;
    private Uri ImageUri;
    private StorageReference PostsImagesRefrence;
    private DatabaseReference UsersRef, PostsRef;

    private FirebaseAuth mAuth;
    private String saveCurrentData, saveCurrentTime, postRandomName, current_user_id, downloadUrl;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post);

        mAuth = FirebaseAuth.getInstance();
        current_user_id = mAuth.getCurrentUser().getUid();

        PostsImagesRefrence = FirebaseStorage.getInstance().getReference();
        UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
        PostsRef = FirebaseDatabase.getInstance().getReference().child("Posts");

        SelectPostImage = (ImageButton) findViewById(R.id.imageButton3);
        UpdatePostButton = (Button) findViewById(R.id.button3);
        PostDescription = (EditText) findViewById(R.id.editText);

        mToolbar = (Toolbar) findViewById(R.id.update_post_page_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("Update Post");

        SelectPostImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OpenGallery();
            }
        });

        UpdatePostButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ValidatePostInfo();
            }
        });
    }

    private void ValidatePostInfo() {
        String Description = PostDescription.getText().toString();

        if(ImageUri==null)
        {
            Toast.makeText(this, "Please select post image", Toast.LENGTH_SHORT).show();
        }
        else if(TextUtils.isEmpty(Description)){
            Toast.makeText(this, "Please say something about your image",Toast.LENGTH_SHORT).show();
        }
        else{
            StoringImageToFirebaseStorage();
        }
    }

    private void StoringImageToFirebaseStorage() {

        Calendar calFordData = Calendar.getInstance();
        SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
        saveCurrentData = currentDate.format(calFordData.getTime());

        Calendar calFordTime = Calendar.getInstance();
        SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm");
        saveCurrentTime = currentTime.format(calFordData.getTime());

        postRandomName = saveCurrentData + saveCurrentTime;

        StorageReference filePath = PostsImagesRefrence.child("Post Images").child(ImageUri.getLastPathSegment()+ postRandomName + ".jpg");

        filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                if (task.isSuccessful())
                {
                     Task <Uri> downloadUrl = task.getResult().getMetadat().getReference().getDownloadUrl().toString();
                    Toast.makeText(PostActivity.this, "Image uploaded successfully to storage", Toast.LENGTH_SHORT).show();

                    SavingPostInformationToDatabase();
                }
                else{
                    String message = task.getException().getMessage();
                    Toast.makeText(PostActivity.this, "Error Occurred", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private void SavingPostInformationToDatabase() {

             UsersRef.child(current_user_id).addValueEventListener(new ValueEventListener() {
                 @Override
                 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                     if(dataSnapshot.exists()){
                         String userFullName = dataSnapshot.child("fullname").getValue().toString();
                         String userProfileImage = dataSnapshot.child("profileimage").getValue().toString();

                         HashMap postsMap = new HashMap();
                         postsMap.put("uid", current_user_id);
                         postsMap.put("date", saveCurrentData);
                         postsMap.put("time", saveCurrentTime);
                         postsMap.put("description", PostDescription);
                         postsMap.put("postimage", downloadUrl);
                         postsMap.put("profileimage", userProfileImage);
                         postsMap.put("fullname", userFullName);
                         PostsRef.child(postRandomName).updateChildren(postsMap)
                                 .addOnCompleteListener(new OnCompleteListener() {
                             @Override
                             public void onComplete(@NonNull Task task) {

                                 if (task.isSuccessful()){
                                     SendUserToHomeActivity();
                                     Toast.makeText(PostActivity.this, "Post is updated successfully", Toast.LENGTH_SHORT).show();

                                 }
                                 else {
                                     Toast.makeText(PostActivity.this, "Error Occurred", Toast.LENGTH_SHORT).show();
                                 }
                             }

                         });



                     }
                 }

                 @Override
                 public void onCancelled(@NonNull DatabaseError databaseError) {

                 }
             });
    }

    private void OpenGallery() {

        Intent galleryIntent = new Intent();
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        galleryIntent.setType("image/*");
        startActivityForResult(galleryIntent, Gallery_Pick);

    }




    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==Gallery_Pick && resultCode==RESULT_OK && data!=null){
            ImageUri = data.getData();
            SelectPostImage.setImageURI(ImageUri);
        }
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id = item.getItemId();

        if(id==android.R.id.home){
            SendUserToHomeActivity();
        }
        return super.onOptionsItemSelected(item);
    }

    private void SendUserToHomeActivity(){
        Intent homeIntent = new Intent(PostActivity.this, HomeActivity.class);
        startActivity(homeIntent);
    }

}

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете использовать так:

filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    downloadUrl =  uri.toString();
                    SavingPostInformationToDatabase();
                    Toast.makeText(PostActivity.this, "Image uploaded successfully to storage", Toast.LENGTH_SHORT).show();

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