BitmapFactory: No se puede descodificar la secuencia: java.io.FileNotFoundException incluso cuando el archivo IS está realmente allí

Estoy creando una aplicación sencilla para tomar una foto. Este es mi código

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); } } 

Como se puede ver, he añadido eLog.d(TAG, mImageUri.toString()); Al final y en el logcat (así como la FileNotFoundException ) veo este direcory:

 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) 

Adivina si este directorio existe? Spoler alerta , lo hace . Y no es como la imagen se crea después de BitmapFactory.decodeFile . Realmente no entiendo lo que estoy haciendo mal. Todo funciona bien, excepto cuando realmente tiene que mostrar la foto, entonces simplemente no lo muestra. Sólo en blanco. Al igual que WTF m8 estoy tratando de hacer mi trabajo no hay necesidad de volverse loco, ya sabes.

Reemplace mImageUri.toString() con mImageUri.getPath() .

decodeFile espera una ruta de acceso, no una cadena de uri.

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

Remove file:// porque decodeFile () espera una ruta del sistema de archivos.

 /storage/emulated/0/cameratest/picture459838058.jpg 
  • ¿Cómo puedo detener un temporizador?
  • ¿Es posible ejecutar applets Java en el navegador WebKit de Android?
  • Volley - No se puede resolver el constructor "JSONObjectRequest
  • Java vs Objective C en caso de excepción nullpointer
  • Typed Array debe ser reciclado después de su uso con #recycle ()
  • Biblioteca de soporte de Android v7 + Maven + Eclipse: dependencia apklib no encontrada en el espacio de trabajo
  • ¿Qué analizador DOM de HTML funciona mejor en Android?
  • GlCreateShader y glCreateProgram fallan en android
  • Android RecyclerView, el reciclaje no funciona correctamente
  • Usando SQLCipher con el archivo de base de datos SQLite enviado sqlite
  • Android VpnService proteger socket que se almacena en código nativo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.