ich den Code unten bin mit einer Image-Datei von Gerät Galerie holen:Android Pick Bild aus der Galerie funktioniert nicht (Android 6.0 und Android 5.1.1)
Zuerst Ich nenne dieses Stück 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 mein onActivityResult
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 dieses eine Hilfsmethode Bildpfad abzurufen:
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 seltsam ist. In meinem 6.0-Emulator, manchmal funktioniert es und manchmal Nein. In einem anderen Gerät (Android 5.1.1) ein FileNotFound Exception
an dieser Linie geworfen wird
fis = new FileInputStream(new File(photoPath));
Alle erforderlichen Berechtigungen sind fine.Do euch eine Idee haben, was ist denn hier los? Oder haben Sie einen besseren Vorschlag, um ein Bild aus der Galerie auszuwählen?
Danke Mann, es sieht aus wie es in Ordnung ist. ABER, nicht mit zu großen Bildern arbeiten (ca. 4MB).Es wird keine Ausnahme ausgelöst, aber das Bild wird nicht angezeigt. Es zeigt stattdessen ein graues Bild, wie das Bild, das zu hoch ist, um hochgeladen zu werden oder etw. Wie auch immer, um diese Antwort zu vervollständigen, um 'Bitmap' in' Bytearray' zu konvertieren, hat mir das geholfen: http://stackoverflow.com/questions/4989182/converting-java-bitmap-to-byte-array. – user19922
@ user1992 Immer willkommen –