игнорирование метода continueWithTask - PullRequest
0 голосов
/ 20 февраля 2019

При нажатии кнопки берется фотография из галереи (метод addPhoto).

В методе onActivityResult фотография загружается в хранилище Firebase с именем ключа (donosId переменная) получено.

Затем в соответствии с документацией , чтобы получить URL изображения, мы используем метод continueWithTask, внутри которого полученный URL помещается в Firebase.База данных.

Проблема: метод continueWithTask не запускается (проверяется с журналами + значение URL остается пустым).В чем заключается ошибка или как еще вы можете вернуться из метода URL (переменная типа Uri)?

Код:

public void addPhoto(View view) {
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
        photoPickerIntent.setType("image/*");
        startActivityForResult(photoPickerIntent, GALLERY_REQUEST);
    }

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

        if (requestCode == 1 && data != null) {

            final DatabaseReference newDatabaseReference = FirebaseDatabase.getInstance().getReference("items").push();

            donosId = newDatabaseReference.getKey();

            final StorageReference imageRef = FirebaseStorage.getInstance().getReference().child("images/" + donosId + ".jpg");

            imageRef.putFile(data.getData()).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();
                    }

                    // Continue with the task to get the download URL
                    return imageRef.getDownloadUrl();
                }
            }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(@NonNull Task<Uri> task) {
                    if (task.isSuccessful()) {

                        Uri downloadUri = task.getResult();

                        String var = downloadUri.toString();

                        Item item = new Item(mNameEditText.getText().toString(),
                                mSecNameEditText.getText().toString(), var,
                                (int) System.currentTimeMillis());
                        newDatabaseReference.setValue(item);

                    }
                }
            });

        }
    }

Я не знаю, почему функция неработает внутри и не может получить доступ к downloadURL, но изображение загружается в Firebase Storge.

...