onActivityResult () дает нулевые данные в моем коде для захвата изображения и загрузки его в хранилище Firebase - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь захватить изображение из моего приложения и затем загрузить его в хранилище Firebase.Я пытаюсь передать захваченное изображение, хотя намерение.Однако метод onActivityResult () всегда показывает нулевые данные.

Это приложение для создания заметок, которое я создаю.При нажатии на значок камеры в приложении должно открыться приложение камеры телефона, а после захвата полученное изображение должно быть загружено в базу данных.Я прилагаю свой код для того же.

    private static final int Camera_Request_Code = 1;
protected void onCreate(Bundle savedInstanceState) {
        if (Build.VERSION.SDK_INT >= 23) {
            requestPermissions(new String[]{Manifest.permission.CAMERA}, 1
            );
        }

        mCaptureBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, Camera_Request_Code);
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Camera_Request_Code && resultCode == RESULT_OK) {


            mProgress.setMessage("Uploading image");
            mProgress.show();

            Log.d("...............",""+data.getData());
            Uri uri = data.getData();
            StorageReference filePath=mStorage.child("Images").child(uri.getLastPathSegment());
            filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    mProgress.dismiss();
                    Toast.makeText(CameraActivity.this,"Uploading finished",Toast.LENGTH_SHORT).show();
                }
            });
   }

    }

Ошибка: вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String android.net.Uri.getLastPathSegment ()'на нулевой ссылке на объект

1 Ответ

0 голосов
/ 15 апреля 2019

Исключение возникает из-за того, что Uri в onActivityResult() равно нулю:

Uri uri = data.getData();

Документация для захвата изображения с камеры объясняет:

Приложение Android Camera сохраняет полноразмерную фотографию, если вы ее дадите файл для сохранения в. Вы должны указать полное имя файла где приложение камеры должно сохранить фотографию .

Следуйте примеру в документации, чтобы создать файл Uri и добавить его в приложение для камеры.

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