Android Bild aus der Galerie auswählen funktioniert nicht (Android 6.0 und Android 5.1.1)

Ich verwende den folgenden Code, um eine Bilddatei aus der Gerätegalerie auszuwählen:

Zunächst nenne ich diesen Code:

Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(i, "Select Picture"), RESULT_LOAD_IMAGE);

Das ist meinonActivityResult Methode

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

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {

            photoPath  = getPath(data.getData());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            FileInputStream fis;
            try {
                fis = new FileInputStream(new File(photoPath));
                byte[] buf = new byte[1024];
                int n;
                while (-1 != (n = fis.read(buf))) {
                    baos.write(buf, 0, n);
                }

                img.setImageBitmap(BitmapFactory.decodeFile(photoPath));

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

Und dies ist eine Hilfsmethode zum Abrufen des Bildpfads:

private String getPath(Uri uri) {

        String[]  data = { MediaStore.Images.Media.DATA };
        CursorLoader loader = new CursorLoader(getApplicationContext(), uri, data, null, null, null);
        Cursor cursor = loader.loadInBackground();
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

Mein Problem ist, dass die App komisch ist. In meinem 6.0-Emulator funktioniert es manchmal und manchmal auch nicht. In einem anderen Gerät (Android 5.1.1) einFileNotFound Exception wird in dieser Zeile geworfen

fis = new FileInputStream(new File(photoPath));

Alle erforderlichen Berechtigungen sind in Ordnung. Habt ihr eine Idee, was hier los ist? Oder haben Sie einen besseren Vorschlag, wie Sie ein Bild aus der Galerie auswählen können?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage