Ich habe den Android-Entwicklerleitfaden befolgt, um eine App zu erstellen, die eine vorhandene Kamera-App verwendet, um einige Fotos aufzunehmen. Als nächstes versuche ich, sie in eine Bildansicht mit diesem Teil der Anleitung https://developer.android.com/training/camera/photobasics.html#TaskScalePhoto setzen, aber BitmapFactory decodeFile gibt null zurück. Ich habe es auf den folgenden Code vereinfacht, aber es ergibt das gleiche Ergebnis.Warum gibt BitmapFactory decodeFile null zurück?
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);
imageView.setImageBitmap(bitmap);
mCurrentPhotoPath wurde image.getAbsolutePath()
gesetzt und ein Beispiel ist Speicher// 0/Android/data // Dateien/Bilder/JPEG_20170503_102533_2060032401.jpg
emuliert den Wert harter Code kann ich mCurrentPhotoPath einer bekannten Foto und ich bekomme immer noch null.
Allerdings, wenn ich ersetzen, dass mit Speicher/emulierten/0/DCIM/Kamera/IMG_20161124_145814981_HDR.jpg (ein Foto erstellt separat meine Telefone normale Kamera App), dann funktioniert es.
Ich habe
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
in meinem Manifest. Die 2 Dateien haben die gleichen Berechtigungen und sind ungefähr gleich groß. Ich kann sie woanders kopieren und sie scheinen gültige JPEG-Dateien zu sein. Irgendwelche Ideen, was könnte los sein?
Ich habe viele Beiträge durchgesehen und eine Reihe von Dingen einschließlich der unten stehenden Variation versucht, aber ich bekomme das gleiche Ergebnis.
File dest = new File(mCurrentPhotoPath);
FileInputStream fis = null;
fis = new FileInputStream(dest);
Bitmap img = BitmapFactory.decodeStream(fis);
smallPhoto.setImageBitmap(img);
Pfade beginnen mit '/'. Ich würde erwarten, dass alle von Ihnen scheitern, einschließlich der, von der Sie sagen, dass sie funktioniert. – CommonsWare
Wahrscheinlich die falschen BitmapOptions übergeben. –
der erste Pfad sieht fehlerhaft aus, hat doppelter '//' in der Mitte – LukeJanyga