BitmapFactory: невозможно декодировать поток: java.io.FileNotFoundException, даже если файл действительно существует

Я создаю простое приложение, чтобы сделать снимок. Это мой код

Button b1; ImageView iv; String TAG = "MAIN ACTIVITY"; File photo; private Uri mImageUri; private File createTemporaryFile(String part, String ext) throws Exception { File externalStorageDirectory = Environment.getExternalStorageDirectory(); File tempDir = new File(externalStorageDirectory + "/cameratest/"); if (!tempDir.exists()) { tempDir.mkdir(); } return File.createTempFile(part, ext, tempDir); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); iv = (ImageView) findViewById(R.id.imageView); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); try { // place where to store camera taken picture photo = createTemporaryFile("picture", ".jpg"); photo.delete(); } catch (Exception e) { Log.v(TAG, "Can't create file to take picture!"); Toast.makeText(getApplicationContext(), "Please check SD card! Image shot is impossible!", Toast.LENGTH_SHORT).show(); } mImageUri = Uri.fromFile(photo); intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); startActivityForResult(intent, 0); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0 && resultCode == RESULT_OK) { Log.d(TAG, mImageUri.toString()); Bitmap bitmap = BitmapFactory.decodeFile(mImageUri.toString()); iv.setImageBitmap(bitmap); } } 

Как вы можете видеть, я добавил eLog.d(TAG, mImageUri.toString()); В конце и в logcat (а также в FileNotFoundException ) я вижу эту директорию:

 03-27 00:43:30.498 30526-30526/myapplication.example.falcoleo.cameratest1 D/MAIN ACTIVITY: file:///storage/emulated/0/cameratest/picture459838058.jpg 03-27 00:43:30.499 30526-30526/myapplication.example.falcoleo.cameratest1 E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: file:/storage/emulated/0/cameratest/picture459838058.jpg: open failed: ENOENT (No such file or directory) 

Предположим, существует ли этот каталог? Spoler alert , он делает . И это не похоже на то, что изображение создается после BitmapFactory.decodeFile . Я действительно не понимаю, что я делаю неправильно. Все работает отлично, за исключением случаев, когда на самом деле нужно отображать фотографию, тогда она просто не отображает ее. Просто пусто. Как WTF m8, я просто пытаюсь сделать свою работу, не нужно сходить с ума, вы знаете.

Замените mImageUri.toString() с помощью mImageUri.getPath() .

decodeFile ожидает путь, а не строку uri.

 file:///storage/emulated/0/cameratest/picture459838058.jpg 

Удалить file:// потому что decodeFile () ожидает путь к файловой системе.

 /storage/emulated/0/cameratest/picture459838058.jpg 
Intereting Posts
Компиляция STXXL под Android NDK r8b Недействительный 1 пользовательский вид вызывает все пользовательские представления в группе просмотра, которая будет признана недействительной? Когда рабочий поток работает, пользовательский интерфейс становится изменчивым Функция PhoneGap Eventup и кнопка volumedown не работают. Кордова: Android SDK не найден. Убедитесь, что он установлен. Если он не находится по умолчанию, установите переменную среды ANDROID_HOME Bluetooth-звонок Gatt не работает с новым API для Lollipop Есть ли низкоуровневый API для Wi-Fi? Как я могу решить R.layout.main не может быть разрешен в моих приложениях для Android? Зачем использовать getCacheDir () на Android Как изменить изображения с помощью таймера При использовании scrollTo ListView не обновляется, но когда ручная прокрутка обновляется Как узнать, работает ли мое приложение на Bluestacks? Отображать активность как оверлейное окно на планшетах Что (?! A) {0}? Означает в регулярном выражении Java? GCM и специальные символы