FileNotFoundException ao usar ExifInterface

Fiz upload de imagens para o FirebaseStorage, mas geralmente elas são o caminho errado ao exibi-las. Descobri o ExifInterface que pode determinar a orientação da imagem e girá-la e girá-la, se necessário.

Ao selecionar a imagem da área da galeria no meu telefone, recebo este erro.

Posso selecionar a imagem no meu telefone na galeria e ela pode ser exibida na página.

As diferenças entre o endereço URI e os dados são uma/

Data.getData() address : content://media/external/images/media/53331

uri.toString() address: content:/media/external/images/media/53331

Estou usando o endereço uri como caminho absoluto da imagem para poder girá-lo, se necessário. Eu passo esse valor para outro método chamadomodifyOrientation que então gira. Depois de passado para o método, chega à linha

ExifInterface ei = new ExifInterface(image_absolute_path);

e, em seguida, retorna à captura, pois o arquivo não foi encontrado.

Abaixo está o erro inteiro que estou recebendo, bem como todo o meu código. Como posso corrigir esse problema que estou tendo? Então, quando passo o URI para o próximo método, ele realmente tem o endereço correto.

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        final FirebaseUser user = auth.getCurrentUser();

        if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK)
        {
            progressDialog = new ProgressDialog(getActivity());
            progressDialog.setMessage("Displaying Image...");
            progressDialog.show();

            //imageUri = data.getData();
            //Picasso.get().load(imageUri).into(profileImage);


            final Uri uri = data.getData();


            File file = new File(uri.toString());
            file.getAbsolutePath();

            progressDialog.dismiss();
            try
            {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
                modifyOrientation(bitmap,file.getAbsolutePath());
                profileImage.setImageBitmap(bitmap);
            }
            catch(IOException e)
            {
                e.getStackTrace();
            }
        }
    }

    public static Bitmap modifyOrientation(Bitmap bitmap, String image_absolute_path) throws IOException {
        ExifInterface ei = new ExifInterface(image_absolute_path);
        int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

        switch (orientation) {
            case ExifInterface.ORIENTATION_ROTATE_90:
                return rotate(bitmap, 90);

            case ExifInterface.ORIENTATION_ROTATE_180:
                return rotate(bitmap, 180);

            case ExifInterface.ORIENTATION_ROTATE_270:
                return rotate(bitmap, 270);

            case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
                return flip(bitmap, true, false);

            case ExifInterface.ORIENTATION_FLIP_VERTICAL:
                return flip(bitmap, false, true);

            default:
                return bitmap;
        }
    }

    public static Bitmap rotate(Bitmap bitmap, float degrees) {
        Matrix matrix = new Matrix();
        matrix.postRotate(degrees);
        return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    }

    public static Bitmap flip(Bitmap bitmap, boolean horizontal, boolean vertical) {
        Matrix matrix = new Matrix();
        matrix.preScale(horizontal ? -1 : 1, vertical ? -1 : 1);
        return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    }

questionAnswers(1)

yourAnswerToTheQuestion